美文网首页
【leetcode】178. 分数排名-中等

【leetcode】178. 分数排名-中等

作者: 流年残雪 | 来源:发表于2020-12-02 10:09 被阅读0次

    【题目】

    编写一个 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

    重要提示:对于 MySQL 解决方案,如果要转义用作列名的保留字,可以在关键字之前和之后使用撇号。例如 Rank

    【题解】

    法一:窗口函数

    select score,
      dense_rank() over (order by score desc) as 'rank' from scores;
    

    法二:子查询

    select s1.score,
      (select count(distinct s2.score) from scores s2 
       where s2.score>=s1.score) as 'rank'
    from scores s1
    order by s1.score desc;
    

    相关文章

      网友评论

          本文标题:【leetcode】178. 分数排名-中等

          本文链接:https://www.haomeiwen.com/subject/bguswktx.html