【Leetcode】178. Rank Scores

    科技2023-10-10  113

    题目地址:

    https://leetcode.com/problems/rank-scores/

    给定一个Scores表,例如:

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

    要求返回每个Score的排名。每个Score都必须显示,如果有相同Score的,排名也设为相同,并且同一个Score出现多次的话,只当做出现一次参与排名。例如,上面的表格,应该得到的结果是:

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

    可以用内置函数DENSE_RANK(),这个函数会将每个记录按照某个字段排名,并列的记录排名一样,并且并列的记录只占一个排名。代码如下:

    SELECT Score, DENSE_RANK() OVER (ORDER BY Score DESC) `Rank` FROM Scores;
    Processed: 0.016, SQL: 8