hive的排序函数 rank(),dense_rank(),row_number() 区别

建表:

create table test_rank(
name string,
subject string,
score  string
)
;

插入数据:

insert overwrite table test_rank values
('孙悟空','语文','87'),
('孙悟空','数学','95'),
('孙悟空','英语','68'),
('沙悟净','语文','94'),
('沙悟净','数学','56'),
('沙悟净','英语','78'),
('宋松松','语文','64'),
('宋松松','数学','86'),
('宋松松','英语','84'),
('罗婷婷','语文','87'),
('罗婷婷','数学','85'),
('罗婷婷','英语','78')
;

执行排序代码:

select * ,
    RANK()  over(partition by subject  order by score desc) rank,
    DENSE_RANK()  over(partition by subject  order by score desc) dense_rank ,
    ROW_NUMBER()  over(partition by subject  order by score desc) row_num
from test_rank
;

输出结果:


image.png

全国排名TOP5的大学有20所,我怀疑就是用dense_rank() 计算的。。

另外,不常用的排序函数还有:percent_rank(),ntile()。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容