rank 函数
也是一种分析函数. 需要配合开窗函数使用.
不能跟 window 子句(rows....
)
RANK()
排序相同时会重复,序号会出现不连续的情况
DENSE_RANK()
排序相同时会重复,序号连续
ROW_NUMBER()
排序相同时不会重复,序号连续
percent_rank()
(分组内的rank值 - 1)/(分组内的总行数 - 1)
cume_dist()
: 分组内的当前行数/分组内的总行数
需求: 计算每门学科成绩排名
建表, 并插入数据:
create table score(
name string,
subject string,
score int)
row format delimited fields terminated by "\t";
load data local inpath '/opt/module/datas/score.txt' 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;