SELECT *,
RANK() OVER ( PARTITION BY 科目 ORDER BY 得分 DESC ) AS RANK_排名,
DENSE_RANK() OVER ( PARTITION BY 科目 ORDER BY 得分 DESC ) AS DENSE_RANK_排名,
ROW_NUMBER() OVER ( PARTITION BY 科目 ORDER BY 得分 DESC ) AS ROW_NUMBER_排名
FROM 成绩单
RANK 根据排序字段为每个分组中的每一行分配一个序号。排名值相同时,序号相同,但序号中存在间隙,例如:1、1、1、4、5
DENSE_RANK 根据排序字段为每个分组中的每一行分配一个序号。排名值相同时,序号相同,序号中没有间隙,例如:1、1、1、2、3
ROW_NUMBER 为表中的每一行分配一个序号,可以指定分组(也可以不指定)及排序字段(连续且不重复),例如:1、2、3、4、5
NTILE(n) 将分区中的有序数据分为 n 个等级,记录等级数。
SELECT *,
NTILE(2) OVER ( PARTITION BY 学号 ORDER BY 得分 DESC ) AS NTILE_
FROM 成绩单