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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值