天天看点

简单粗暴理解hive开窗函数rank()、dense_rank()及row_number()的区别看下这个例子,秒懂排序函数之间的区别

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

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

简单粗暴理解hive开窗函数rank()、dense_rank()及row_number()的区别看下这个例子,秒懂排序函数之间的区别

简单来说:

  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