题目描述
编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/rank-scores
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
select Score, (select count(distinct s.Score) from Scores as s where s.Score >= Scores.Score) as Rank from Scores order by Score desc;
答案解析
# 获取分数列
select Score,
# 获取去重分数个数,需要先执行from后面的条件,根据后面的条件获取数量
(select count(distinct s.Score)
# 将获取到的每一个Score跟所有的Score做比较,比较大的会进行去重,也就是上一句的distinct
from Scores as s where s.Score >= Scores.Score)
# 进行倒序排
as Rank from Scores order by Score desc;