建表:
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
;
输出结果:
全国排名TOP5的大学有20所,我怀疑就是用dense_rank() 计算的。。
另外,不常用的排序函数还有:percent_rank(),ntile()。