Hive rank函数开窗

表数据如下

select * from score;

score.name	score.subject	score.score	r1	r2	r3
大海	语文	94	1	1	1
大海	英语	84	2	2	2
大海	数学	56	3	3	3
婷婷	数学	85	1	1	1
婷婷	英语	78	2	2	2
婷婷	语文	65	3	3	3
孙悟空	数学	95	1	1	1
孙悟空	语文	87	2	2	2
孙悟空	英语	68	3	3	3
宋宋	数学	86	1	1	1
宋宋	英语	84	2	2	2
宋宋	语文	64	3	3	3

函数说明: 

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

select *,rank() over(distribute by name sort by score desc) r1,dense_rank() over(distribute by name sort by score desc) r2, row_number() over(distribute by name sort by score desc) r3 from score;

score.name	score.subject	score.score	r1	r2	r3
大海	语文	94	1	1	1
大海	英语	84	2	2	2
大海	数学	56	3	3	3
婷婷	数学	85	1	1	1
婷婷	英语	78	2	2	2
婷婷	语文	65	3	3	3
孙悟空	数学	95	1	1	1
孙悟空	语文	87	2	2	2
孙悟空	英语	68	3	3	3
宋宋	数学	86	1	1	1
宋宋	英语	84	2	2	2
宋宋	语文	64	3	3	3

  

原文地址:https://www.cnblogs.com/noyouth/p/12733357.html