【LeetCode】178.分数排名 笔记

178.分数排名

编写一个 SQL查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有间隔

【LeetCode】178.分数排名 笔记

答案:

此题的思路是对于每一个分数,找出表中有多少个大于或等于该分数的不同的分数,然后按降序排列即可。

[sql] view plain copy
  1. select Score, 
  2. (select count(distinct(Score)) from Scores 
  3. where Score >= s.Score) Rank  #使用表别名,与前一个数值进行比较,count大于s.score的score 
  4. from Scores s order by Score DESC;  #然后降序排列

此排名方式,是使用一个表的score对另一个表的各个score进行比较,实际上是通过count   score与 s.score的比较,算算>=的值的数量,来进行排序。