文章目录
- 1 排名函数有哪些?
- 2 SQL 代码实现
- 2.1 RANK
- 2.2 DENSE_RANK
- 2.3 ROW_NUMBER
1 排名函数有哪些?
- RANK(): 并列跳跃排名, 并列即相同的值, 相同的值保留重复名次, 遇到下一个不同值时, 跳跃到总共的排名
- DENSE_RANK(): 并列连续排序, 并列即相同的值, 相同的值保留重复名次, 遇到下一个不同值时, 依然按照连续数字排名
- ROW_NUMBER(): 连续排名, 即使相同的值, 依旧按照连续数字进行排名
RANK, DENSE_RANK, ROW_NUMBER 函数在查询结果上的区别
2 SQL 代码实现
t_scores 表
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| id | int |
| score | decimal |
+-------------+---------+
在 SQL 中, id 是该表的主键
该表的每一行都包含了一场比赛的分数, score 是一个有两位小数点的浮点值
2.1 RANK
RANK(): 并列跳跃排名, 并列即相同的值, 相同的值保留重复名次, 遇到下一个不同值时, 跳跃到总共的排名
RANK() OVER(ORDER BY score DESC)
对 score 字段升序排序, 进行排名
SELECT score, RANK() OVER(ORDER BY score ASC) as "rank" FROM t_scores;
查询结果:
2.2 DENSE_RANK
DENSE_RANK(): 并列连续排序, 并列即相同的值, 相同的值保留重复名次, 遇到下一个不同值时, 依然按照连续数字排名
SELECT score, DENSE_RANK() OVER(ORDER BY score ASC) as "rank" FROM t_scores;
查询结果:
2.3 ROW_NUMBER
ROW_NUMBER(): 连续排名, 即使相同的值, 依旧按照连续数字进行排名
SELECT score, ROW_NUMBER() OVER(ORDER BY score ASC) as "rank" FROM t_scores;
查询结果: