接上两篇博客
Hive _偏门常用查询函数(一)附带实例
https://blog.csdn.net/qq_41946557/article/details/102904642
Hive _偏门常用查询函数(二)附带实例(列转行、窗口函数)
https://blog.csdn.net/qq_41946557/article/details/102905208
Rank
1.函数说明
RANK() 排序相同时会重复,总数不会变
DENSE_RANK() 排序相同时会重复,总数会减少
ROW_NUMBER() 会根据顺序计算
2.数据准备
vi rank
孙悟空 语文 87
孙悟空 数学 95
孙悟空 英语 68
大海 语文 94
大海 数学 56
大海 英语 84
宋宋 语文 64
宋宋 数学 86
宋宋 英语 84
婷婷 语文 65
婷婷 数学 85
婷婷 英语 78
创建表:
create table score(
name string,
subject string,
score int)
row format delimited fields terminated by "\t";
0: jdbc:hive2://henu2:10000> load data local inpath "/root/rank" into table score;
需求:
计算每门学科成绩排名。
select name,
subject,
score,
rank() over(partition by subject order by score desc) rp,
dense_rank() over(partition by subject order by score desc) drp,
row_number() over(partition by subject order by score desc) rmp
from score;
结果展示: