使用窗口函数
rank, dense_rank, row_number
例题
编写一个 SQL 查询来实现分数排名。
如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。
dense_rank 分数一样按同样的排名,并且即使有同样的排名,也不占用位置,直接连续排名
select score,
dense_rank() over(order by Score desc) as dense_rank
from Scores;
三者结果对比