oracle rank排序
来源:互联网 发布:c语言 char负值 编辑:程序博客网 时间:2024/06/06 10:20
排序:
---rank()over(order by 列名 排序)的结果是不连续的,如果有4个人,其中有3个是并列第1名,那么最后的排序结果结果如:1 1 1 4
select scoreid, studentid,COURSENAME,totalexamscore ,
rank()over(order by TOTALEXAMSCORE desc)orderbyNum
from SCORECOURSE a ,COURSESCORE b
where a.SCORECOURSEID = b.SCORECOURSEID
---dense_rank()over(order by 列名 排序)的结果是连续的,如果有4个人,其中有3个是并列第1名, 那么最后的排序结果如:1 1 1 2
select scoreid, studentid,COURSENAME,totalexamscore ,
dense_rank()over(order by TOTALEXAMSCORE desc)orderbyNum
from SCORECOURSE a ,COURSESCORE b
where a.SCORECOURSEID = b.SCORECOURSEID
----rank () OVER (PARTITION BY 列名 ORDER BY 列名 排序)使用分区方式获取每门课程的最高分
SELECT *
FROM (SELECT scoreid, studentid, coursename, TOTALEXAMSCORE,
rank () OVER (PARTITION BY coursename ORDER BY TOTALEXAMSCORE DESC)orderbynum
FROM scorecourse a, coursescore b
WHERE a.scorecourseid = b.scorecourseid and studentID = 'xxxxx')
WHERE orderbynum < 2
使用over实现成绩求和
-----SUM (totalexamscore) OVER (ORDER BY studentid) sum1 实现的是连续求和,如第一个学生的总评成绩是30,则sum1就展示为30,到第二个学生成绩出现的时候,则会依次累加
-----SUM (totalexamscore) OVER () sum2 就相当于是单纯的求和,和直接使用sum是一致的
SELECT scoreid, studentid, totalexamscore,
SUM (totalexamscore) OVER (ORDER BY studentid) sum1,
SUM (totalexamscore) OVER () sum2
FROM coursescore
注:这个案例想了很久也没想到很直观的描述,还请大家亲自去测试一下吧!!
语法:
rank() over (order by 排序字段 顺序)
rank() over (partition by 分组字段 order by 排序字段 顺序)
1.顺序:asc|desc 名次与业务相关:
示例:求优秀学员,成绩:降序 迟到次数:升序
2.分区字段:根据什么字段进行分区。
问题:分区与分组有什么区别?
•分区只是将原始数据进行名次排列(记录数不变),
•分组是对原始数据进行聚合统计(记录数变少,每组返回一条)。
注意:使用rank()over(order by 排序字段 顺序)排序的时候,空值是最大的
正常order by 排序中,默认为asc,null为最小值
(如果排序字段为null,可能造成在排序时将null字段排在最前面,影响排序的正确性。
所以建议将dense_rank()over(order by 列名 排序)改为dense_rank()over(order by 列名 排序 nulls last)
这样只要排序字段为null,就会放在最后,而不会影响排序结果).
- oracle rank排序
- 用rank对oracle分组排序
- ORACLE-排序技巧ROW_NUM,ROW_NUMBER,RANK,DENSE_RANK,
- Oracle分析函数之排序值rank()
- Oracle分级排序函数Rank、Dense_Rank、Row_Number比较
- oracle的几个排序函数 ROW_NUMBER()/DENSE_RANK()/RANK()
- Oracle row_number排序函数与排名函数rank函数用法
- Oracle 中rank() 对表中的数据进行分级排序
- Oracle-分析函数之排序值rank()和dense_rank()
- oracle笔记(5)----排序函数row_number、rank、dense_rank
- oracle 中使用row_numer(),rank()及dense_rank()排序的区别
- mysql rank 排序
- ORACLE Rank, Dense_rank, row_number
- oracle rank函数
- oracle排名函数rank()
- ORACLE分析函数---RANK()
- ORACLE中的rank函数
- Oracle RANK函数
- Redis常用数据类型
- Google Earth与ArcGIS数据交互(四)
- 开通新博客,记录新生活
- 解决Qt中文乱码问题
- C#文件流写入结构体
- oracle rank排序
- 获取mp4文件信息3 - 计算电影声音采样频率
- 网络游戏通信协议
- system_server运行机制
- poj 3940 Grey Area 浮点输出控制
- python7:字符串
- Linux下Bluez的编程实现
- Shell编程之多行注释
- poj 1056 IMMEDIATE DECODABILITY