排序函数 rank() dense_rank()

排序函数:
1.rank() over(partition by 分组项 order by 排序项  [desc|asc])
2.dense_rank() over(partition by 分组项 order by 排序项  [desc|asc])
区别:
dence_rank在并列关系后,不会跳过等级。rank则跳过。
例子:
1.select sal,rank() over(partition by deptno order by sal desc) from emp;(跳过)

       SAL RANK()OVER(PARTITIONBYDEPTNOORDERBYSALDESC)
---------- -------------------------------------------
      5000                                           1
      2450                                           2
      1300                                           3
      3000                                           1
      3000                                           1
      2975                                           3
      1100                                           4
       800                                           5
      2850                                           1
      1600                                           2
      1500                                           3

       SAL RANK()OVER(PARTITIONBYDEPTNOORDERBYSALDESC)
---------- -------------------------------------------
      1250                                           4
      1250                                           4
       950                                           6

2.select deptno,sal,dense_rank() over(partition by deptno order by sal desc)  (不跳过)
  from emp;

    DEPTNO        SAL DENSE_RANK()OVER(PARTITIONBYDEPTNOORDERBYSALDESC)
---------- ---------- -------------------------------------------------
        10       5000                                                 1
        10       2450                                                 2
        10       1300                                                 3
        20       3000                                                 1
        20       3000                                                 1
        20       2975                                                 2
        20       1100                                                 3
        20        800                                                 4
        30       2850                                                 1
        30       1600                                                 2
        30       1500                                                 3

    DEPTNO        SAL DENSE_RANK()OVER(PARTITIONBYDEPTNOORDERBYSALDESC)
---------- ---------- -------------------------------------------------
        30       1250                                                 4
        30       1250                                                 4
        30        950                                                 5

3.合计排序功能:计算出数值(4,1)在Orade By Col1,Col2排序下的排序值,也就是col1=4,col2=1在排序以后的位置
  SELECT RANK(4,1) WITHIN GROUP (ORDER BY col1,col2) "Rank" FROM table;
  结果如下:

  Rank
  4

  通过以上方法,得出col1为4,col2为1的那行数据的rank排名为多少

 

转载于:https://www.cnblogs.com/sisier/p/4661031.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值