中易网

oracle rank函数怎么用

答案:2  悬赏:70  
解决时间 2021-04-27 22:19
  • 提问者网友:娇妻失忆
  • 2021-04-27 02:46
oracle rank函数怎么用
最佳答案
  • 二级知识专家网友:woshuo
  • 2021-04-27 03:16
rank是oracle分析函数中的一个,主要用法是
rank()over(partiton by XX orader by ZZ desc)(分组排序序号)
一般用来分组排序,与group by XX order by ZZ 不同的是,它并不影响现有数据。
比如:
xx zz
1 2
1 3
1 4
2 2
2 6
那么
select xx,zz,rank()over(partiton by XX orader by ZZ ) aa from table的结果为
xx zz aa
1 2 1
1 3 2
1 4 3
2 2 1
2 6 2
partition by可不写,这样就是全局排序,与order by的排序结果相同,只是会存在序号
还有其他用法,而且还有很多分析函数,这个可以上网找找,oracle分析函数,里面的例子好多,希望对你有帮助。
全部回答
  • 1楼网友:一池湖水
  • 2021-04-27 04:29
table:s (subject,mark) 数学,80 语文,70 数学,90 数学,60 数学,100 语文,88 语文,65 语文,77 现在我想要的结果是:每门科目的前3名的分数 数学,100 数学,90 数学,80 语文,88 语文,77 语文,70 那么语句就这么写: select * from (select rank() over(partition by subject order by mark desc) rk,s.* from s) t where t.rk<=3; dense_rank与rank()用法相当,但是有一个区别:dence_rank在处理相同的等级时,等级的数值不会跳过。rank则跳过。 例如:表 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) liu from test3 m a b c liu 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) liu from test3 m a b c liu 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 3
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息