hive之RANK排名

Posted yumengfei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hive之RANK排名相关的知识,希望对你有一定的参考价值。


RANK() 排序相同时会重复,总数不会变
DENSE_RANK() 排序相同时会重复,总数会减少
ROW_NUMBER() 会根据顺序计算

《小小的案例》

1)数据准备:
#vi score.txt
孙悟空 语文 87
孙悟空 数学 95
孙悟空 英语 68
大海 语文 94
大海 数学 56
大海 英语 84
宋宋 语文 64
宋宋 数学 86
宋宋 英语 84
婷婷 语文 65
婷婷 数学 85
婷婷 英语 78


2)需求:
计算每门学科成绩排名。

3)创建表:
create table score(
name string,
subject string,
score int)
row format delimited fields terminated by " ";

4)将数据导入到表中:
load data local inpath ‘/xxx/score.txt‘ into table score;

5)按需求查询数据
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;

7)结果展示:
name subject score rp drp rmp
孙悟空 数学 95 1 1 1
宋宋 数学 86 2 2 2
婷婷 数学 85 3 3 3
大海 数学 56 4 4 4
宋宋 英语 84 1 1 1
大海 英语 84 1 1 2
婷婷 英语 78 3 2 3
孙悟空 英语 68 4 3 4
大海 语文 94 1 1 1
孙悟空 语文 87 2 2 2
婷婷 语文 65 3 3 3
宋宋 语文 64 4 4 4

以上是关于hive之RANK排名的主要内容,如果未能解决你的问题,请参考以下文章

[HIVE] rank() dense_rank() row_number()的学习

Hive函数

Hive函数

MySQL8.0窗口函数之排名函数(rankdense_rank)的使用

MySQL8.0窗口函数之排名函数(rankdense_rank)的使用

Spark2 DataFrame数据框常用操作之分析函数--排名函数row_number,rank,dense_rank,percent_rank