1 题目描述
编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。
例如,根据上述给定的 Scores 表,你的查询应该返回(按分数从高到低排列):
2 思路变迁
- 两个表,每次用s2中的score去比,计算比自己小的有多少个
- 如果是排名第一那么比他小的有 0个所以前面那个count 需要加1
- 因为不累计分数相同的名词,所以要使用去重关键字distinct
3 代码开搂
# Write your MySQL query statement below
select
s1.Score
,count( distinct s2.Score)+1 Rank
from
Scores s1
left join Scores s2
on s1.Score < s2.Score
group by s1.Id
order by Rank