题目:
编写一个 SQL 查询来实现分数排名。
如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。
解题思路:
窗口函数排序先要了解三个函数:
- rank 有并列名次的行,会占用下一名次的位置
- dense_rank 有并列名次的行,不占用下一名次的位置
- row_number 不考虑并列名次的情况
根据题目要求,选择dense_rank 函数
代码实现如下:
select Score ,dense_rank() over( order by S.Score desc) as "Rank"
from Scores S