您的位置:首页 > 其它

简单粗暴理解hive开窗函数rank()、dense_rank()及row_number()的区别

2018-12-22 18:14 330 查看

看下这个例子,秒懂排序函数之间的区别

  例子为五个同学的成绩,按从小到大排序,三个函数的结果如下:

简单来说:
  rank() over () 并列有间隔,rank值为:1 2 2 4 5
  dense_rank() over() 并列不间断,rank值为:1 2 2 3 4
  row_number() over() 相同连续排名,rank值为:1 2 3 4 5

代码如下:

select
name,score,
rank() over( order by score) rn1,
dense_rank() over( order by score) rn2,
row_number() over( order by score) rn3
from test;

name	  score	rn1	rn2	rn3
A同学	60	1	1	1
B同学	70	2	2	2
C同学	70	2	2	3
D同学	80	4	3	4
E同学	90	5	4	5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: