力扣(LeetCode)题库

您所在的位置:网站首页 力扣排名怎么算的 力扣(LeetCode)题库

力扣(LeetCode)题库

2024-07-13 03:15| 来源: 网络整理| 查看: 265

178. 分数排名

题目链接:https://leetcode-cn.com/problems/rank-scores/

题目:

编写一个 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 DISTINCT 语句用于返回唯一不同的值。DESC:ORDER BY 降序。dense_rank()函数:可以发生持续的编号(连续排序),例如数据值 1,2,2,3 发生的编号将是1,2,2,3;over()函数 :over(order by salary) 按照salary排序进行累计order by是个默认的开窗函数; 答案:

答案1:

SELECT Score, ( SELECT count(DISTINCT score) FROM Scores WHERE score >= s.score ) AS 'Rank' FROM Scores s ORDER BY Score DESC;

答案2:

SELECT Score, dense_rank() over(order by Score desc) as 'Rank' FROM Scores 运行结果:

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3