ORACLE-排序技巧ROW_NUM,ROW_NUMBER,RANK,DENSE_RANK,

来源:互联网 发布:修改照片的软件 编辑:程序博客网 时间:2024/06/10 13:41
1.row_number() over (partition by col_n[,col_m ...] order by col_1[,col_2 ...])

作用:先按照col_n[,col_m ...进行分组,

再在每个分组中按照col_1[,col_2 ...]进行排序(升序),

最后返回排好序后的结果集


可以对每个分组内的行进行排序

利用这一特性可以:

①筛选重复数据

②筛选最新(最旧)数据


2.row_num 伪列

根据查询结果(取数据的时候)返回排序,因此只有有查询结果时才有row_num

①不能对row_num进行'>','>=',=(大于1)'的操作

②在使用ROWNUM时,只有当Order By的字段是主键时,查询结果才会先排序再计算ROWNUM;要注意使用order by时和rownum的先后顺序,会影响结果。

③可以取TOPN的数据

④可以进行分页查询操作


3.RANK() OVER(PARTITION BY col_1 ORDER BY col_2 DESC)  和 dense_rank()

rank返回并列数据并空出并列名次,dense_rank不空出并列名次

--rank: 1 2 2 4;dense_rank:1 2 2 3



0 0
原创粉丝点击