leetcode中的SQL题(四)

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

+----+-------+
| Id | Score |
+----+-------+
| 1  | 3.50  |
| 2  | 3.65  |
| 3  | 4.00  |
| 4  | 3.85  |
| 5  | 4.00  |
| 6  | 3.65  |
+----+-------+

例如,根据上述给定的 Scores 表,你的查询应该返回(按分数从高到低排列)

+-------+------+
| Score | Rank |
+-------+------+
| 4.00  | 1    |
| 4.00  | 1    |
| 3.85  | 2    |
| 3.65  | 3    |
| 3.65  | 3    |
| 3.50  | 4    |
+-------+------+

题目分析:
通过去重后比较大小后体现rank。

答案:

select score,
(select count(distinct score) from scores where score >= s.score) as rank
from scores s
order by score desc;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • LeetCode数据库题目 题目 编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank...
    Shenjiming阅读 5,653评论 0 1
  • 第N高的薪水编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。+----+--...
    katelin阅读 3,483评论 0 5
  • 177. 第N高的薪水 编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。 例...
    一根薯条阅读 4,088评论 0 0
  • 175.组合两个表 表1: Person PersonId 是上表主键表2: Address AddressId ...
    闭门造折阅读 1,534评论 0 0
  • 说明:以下五十个语句都按照测试数据进行过测试,最好每次只单独运行一个语句。 问题及描述: --1.学生表 Stud...
    lijun_m阅读 5,090评论 0 1