rank() within group用法【转】

 参考:http://www.itpub.net/thread-241824-1-1.html

    http://blog.itpub.net/13379967/viewspace-481811/

select rank(1500) within group (order by salary desc) "rank of 1500" from employees;

实际得到的结果就是:
如果存在一条记录,这条记录的salary字段值为1500。
那么将该条记录插入employees表中后,按照salary字段降序排列后,该条记录的序号为多少?
比如原表employees内容如下
SQL> select * from employees;

EMP_ID     EMP_NAME         SALARY
---------- -------------------- ----------
10001      ZhangSan             500
10002      LiSi                 1000
10003      WangWu               1500
10004      MaLiu                2000
10005      NiuQi                2500

则如果一个员工的薪水为1500,那么该员工在员工表中的薪水排名应与WangWu相同,并列排名第三。
通过聚合函数RANK() WITHIN GROUP验证一下:
SQL> select rank(1500) within group (order by salary) as "rank number" from employees;
rank number
-----------
          3

若原表内容如下
SQL> select * from employees;

EMP_ID     EMP_NAME         SALARY
---------- -------------------- --------------
10001      ZhangSan             500
10004      MaLiu                2000
10005      NiuQi                2500

则排名应为第2,验证如下
SQL> select rank(1500) within group (order by salary) as "rank number" from employees;
rank number
-----------
          2

 

合计功能:计算出数值(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排名为多少

 

posted on 2016-08-29 17:22 田灬禾 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/willspring/p/5818826.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值