oracle菜鸟学习之 分析函数-排序

oracle菜鸟学习之 分析函数-排序

排序函数

1.row_number:返回连续的排序,无论值是否相等
2.rank:具有相等值得行排序相同,序数值随后跳跃
3.dense_rank:具有相等值得行排序相同,序号是连续得

实验表

create table chengji(sno number,km varchar2(10),score number);
insert into chengji values(1,‘YW‘,60);
insert into chengji values(1,‘SX‘,60);
insert into chengji values(1,‘YY‘,60);
insert into chengji values(2,‘YW‘,70);
insert into chengji values(2,‘SX‘,70);
insert into chengji values(3,‘YW‘,80);

SQL> select * from chengji;

       SNO KM                      SCORE
---------- ------------------------------ ----------
     1 YW                     60
     1 SX                     60
     1 YY                     60
     2 YW                     70
     2 SX                     70
     3 YW                     80
     1 YW                     60
     1 SX                     60
     1 YY                     60
     2 YW                     70
     2 SX                     70

       SNO KM                      SCORE
---------- ------------------------------ ----------
     3 YW                     80

12 rows selected.

SQL> 

row_number

格式:row_number() over()
排序类似排名,如果A和B的值都是100,那么A的排序为1,B的排序为2

SQL> select sno,km,score,row_number() over (order by score desc) from chengji;

       SNO KM          SCORE ROW_NUMBER()OVER(ORDERBYSCOREDESC)
---------- ------ ---------- ----------------------------------
     3 YW         80                      1
     3 YW         80                      2
     2 YW         70                      3
     2 YW         70                      4
     2 SX         70                      5
     2 SX         70                      6
     1 SX         60                      7
     1 YY         60                      8
     1 SX         60                      9
     1 YW         60                     10
     1 YY         60                     11

       SNO KM          SCORE ROW_NUMBER()OVER(ORDERBYSCOREDESC)
---------- ------ ---------- ----------------------------------
     1 YW         60                     12

12 rows selected.

SQL> 

rank

排序类似排名,如果A和B的值都是100,那么A的排序为1,B的排序为1,C的为3

SQL> select sno,km,score,rank() over (order by score desc) from chengji;

       SNO KM          SCORE RANK()OVER(ORDERBYSCOREDESC)
---------- ------ ---------- ----------------------------
     3 YW         80                1
     3 YW         80                1
     2 YW         70                3
     2 YW         70                3
     2 SX         70                3
     2 SX         70                3
     1 SX         60                7
     1 YY         60                7
     1 SX         60                7
     1 YW         60                7
     1 YY         60                7

       SNO KM          SCORE RANK()OVER(ORDERBYSCOREDESC)
---------- ------ ---------- ----------------------------
     1 YW         60                7

12 rows selected.

SQL> 

dense_rank

排序类似排名,如果A和B的值都是100,那么A的排序为1,B的排序为1,C的排序为2

SQL> select sno,km,score,dense_rank() over (order by score desc) from chengji;

       SNO KM          SCORE DENSE_RANK()OVER(ORDERBYSCOREDESC)
---------- ------ ---------- ----------------------------------
     3 YW         80                      1
     3 YW         80                      1
     2 YW         70                      2
     2 YW         70                      2
     2 SX         70                      2
     2 SX         70                      2
     1 SX         60                      3
     1 YY         60                      3
     1 SX         60                      3
     1 YW         60                      3
     1 YY         60                      3

       SNO KM          SCORE DENSE_RANK()OVER(ORDERBYSCOREDESC)
---------- ------ ---------- ----------------------------------
     1 YW         60                      3

12 rows selected.

SQL> 

原文地址:http://blog.51cto.com/xiaowangzai/2319603

时间: 2024-08-02 08:25:24

oracle菜鸟学习之 分析函数-排序的相关文章

oracle菜鸟学习之 表操作

首发:http://www.arppinging.com/wordpress/?p=96 oracle菜鸟学习之 表操作 1.创建表 在oracle中,创建表使用create table来实现 SQL> create table student(sno number(6),sname varchar2(12),address varchar2(20)); Table created. SQL> desc student; Name Null? Type --------------------

Oracle菜鸟学习之 Oracle基础命令

首发:http://www.arppinging.com/wordpress/?p=93 Oracle菜鸟学习之 Oracle基础命令 1.connect和show user 连接用户和查看当前用户 SQL> show user; USER is "SCOTT" SQL> conn /as sysdba Connected. SQL> show user USER is "SYS" SQL> 2.clear screen 清除屏幕输出 3.s

Oracle菜鸟学习之在RedHat 6.5上安装Oracle

Oracle菜鸟学习之在RedHat 6.5上安装Oracle 11G 首发:http://www.arppinging.com/wordpress/?p=90 安装前准备工作 上传数据库软件至/tmp/下,并修改文件权限 chmod -R 755 /tmp/database/ 创建用户和组 创建oracle用户,并将oracle用户加入oinstall和dba组,后面安装的时候需要用到 [[email protected] ~]# groupadd oinstall [[email prote

oracle菜鸟学习之 select case when的使用

[toc] oracle菜鸟学习之 select case when的使用 格式语法 case when 条件1 then action1 when 条件2 then action2 when 条件3 then action3 when 条件N then actionN else action end 例子 判断现在是几月 SQL> select case substr('20181118',5,2) 2 when '08' then '8yue' 3 when '09' then '9yue'

oracle菜鸟学习之 复杂的更新语句使用

oracle菜鸟学习之 复杂的更新语句使用 实例与答案 问题:表T1里有a,b,c...N个字段,表T2里有a,b,c三个字段,然后想在T1中"c"与表T2中"c"相同的情况下,从表T2中将a,b覆盖表T1中的a,b,怎么做? 实验表: create table T1(a int,b int,c int,d int,e int); create table T2(a int,b int,c int); insert into T1 values(1,2,3,4,5)

oracle 菜鸟学习之 decode中if-then-else逻辑

oracle 菜鸟学习之 decode中if-then-else逻辑 decode类似于if - then - else 语法:decode(values,if1,then1,if2,then2,...else) values 代表某个表的任何类型的任意列或者一个通过计算所得的任何结果,当每个value值被测试,如果value的值为if1,decode函数的结果为then1,如果都不符合,那么就返回else.这里的if.then及else都可以是函数或计算表达式. 例子 create table

Oracle基础学习之空值排序

新建表: 1 -- Create table 2 create table EMP 3 ( 4 empno NUMBER(4), 5 ename VARCHAR2(10), 6 job VARCHAR2(9), 7 mgr NUMBER(4), 8 hiredate DATE, 9 sal NUMBER(7,2), 10 comm NUMBER(7,2), 11 deptno NUMBER(2) 12 ) 13 tablespace USERS 14 pctfree 10 15 initrans

【C语言】【数据结构】菜鸟学习日志(四) 用二叉树实现非递归排序

唉,由于要备战考研,这篇博文可能是我这一年最后一次更新啦! 其实断断续续的也没有写很多,而且大多都是很初级.很简单的东西,没有和大家分享什么高阶的东西.这也正应了我们<菜鸟学习日志>的标题嘛! 不过说回来我还是很喜欢写博文的.一方面总结学到的知识,以后也可以自己看看别做了就忘了:另一方面,写博文也让我在学习的过程中更加认真,以免分享了错误的知识. 写的东西好不好呢是一说,好像有一些点击量,不过看的人估计也不多.只是我还算乐在其中吧! 大学生活说到底过得有点浪了,导致我苦逼地走向了考研的不归路-

[C#] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序

用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html  马桶排序 一.场景:期末考试完了,老师要将同学们的分数从高到低排序.假设班上有 5 名同学,分别考了 5 分.3 分.5 分.2 分和 8 分[满分:10 分],排序后的结果就是 8 5 5 3 2,现在,让我们先思考 10 分钟吧! 二.思路: (1)先创建一个数组 int scores[11],就有 scores[