数据库练习——leetcode(178):分数排名
一、题目
二、解析
首先我们看到输出结果有两列,因此我们要查询的是两个东西,一个是分数,一个是排名。分数好查,普通查询加一个排序即可,那我们应该如何计算排名?你给一个分数,要计算这个分数排第几名只需要知道你前面有多少个distinct分数比你高的即可,然后再count一下。
- 第一步:查询分数(我们暂时先不排序)
select s1.score as Score from Scores as s1
- 第二步:计算排名, 从哪里查?从一个没有重复分数的表格中查
select count(*) from (select distinct score from Score) as s2 where s2.score>= s1.score
- 第三步:将他们结合起来,并按照排名的顺序进行排序
select s1.score as Score ,
(select count(*) from (select distinct score from Scores) as s2 where s2.score>= s1.score)
as Rank
from Scores as s1
order by Rank