编写一个 SQL 查询来实现分数排名。
如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。
思路:想要知道自己的分数排名第几,只需要查询其他人中比自己的分数高的有多少人就行了,其中因为要求分数相同排名相同,所以需要查询比自己分数高的有多少种就行了
代码如下:
select a.Score as Score,(select count(distinct b.Score) from Scores b where b.Score >= a.Score) as `Rank` from Scores a order by Score desc
结果: