题目
SQL架构 编写一个 SQL
查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。
例如,根据上述给定的 Scores 表,你的查询应该返回(按分数从高到低排列):
解题思路
排序score,找出有多少个score(去除重复distinct)比当前score多,当前的rank即为其+1。
代码如下
select s1.score,
(select count(distinct s2.score)+1
from scores s2
where s2.score > s1.score ) rank
from scores s1
order by s1.score desc;
提交结果
成功
显示详情
执行用时 : 833 ms, 在Rank Scores的MySQL提交中击败了63.26% 的用户