分析函数之排序值rank()和dense(2)

SQL:

select * from (select rank() over(partition by a.subject order by a.score desc) rk, a.* from xgj_2 a) t where t.rk <= 3;

这里写图片描述

栗子3

拿第二个栗子的表 作为数据源。

这里写图片描述

合计功能:计算出数值(65,’语文’)在Orade By score ,subject排序下的排序值,也就是score=65,subject=语文在排序以后的位置

SELECT RANK(65,'语文') WITHIN GROUP (ORDER BY score ,subject ) "Rank" FROM xgj_2;

  
结果如下:
 

Rank

dense_rank()

dense_rank与rank()用法相当,但是有一个区别:dence_rank在并列关系是,相关等级不会跳过。rank则跳过.

栗子1

表xgj_3 数据规格:

  A      B      C   a     liu     wang   a     jin     shu   a     cai     kai   b     yang     du   b     lin     ying   b     yao     cai   b     yang     99

  
  例如:当rank时为:

 select m.a,m.b,m.c,rank() over(partition by a order by b) RK from xgj_3 m       A     B       C     RK    a     cai      kai     1    a     jin      shu     2    a     liu      wang     3    b     lin      ying     1    b     yang     du      2    b     yang     99      2    b     yao      cai     4

  
  而如果用dense_rank时为:

 select m.a,m.b,m.c,dense_rank() over(partition by a order by b) RK from xgj_3 m       A     B       C     RK    a     cai     kai     1    a     jin     shu     2    a     liu     wang     3    b     lin     ying     1    b     yang     du      2    b     yang     99      2

更多Oracle相关信息见Oracle 专题页面 ?tid=12

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/1196ef40f1cd3bace6d247f341b9b2e8.html