我正在尝试学习一些SQL,我觉得我应该能够做到这一点,但是出现语法错误。
SELECT Score,
(SELECT COUNT(DISTINCT Score s) FROM Scores WHERE s >= Score) AS Rank
FROM Scores
ORDER BY Score DESC
它可以让我做
# Write your MySQL query statement below
SELECT Score s,
(SELECT COUNT(DISTINCT Score) FROM Scores WHERE Score >= s) AS Rank
FROM Scores
ORDER BY Score DESC
但是对于这个问题,第一列必须命名Score
。
对于这个问题,我已经看到了其他答案,这些答案似乎确实很复杂,但是如果有人有简单的方法可以使这个想法生效,我将不胜感激。
谢谢!
我想你要:
SELECT s.Score,
(SELECT COUNT(DISTINCT s2.Score) FROM Scores s2 WHERE s2.Score >= s.Score) AS Rank
FROM Scores s
ORDER BY s.Score DESC;
请注意,我为表引用和所有列引用都加了别名。
当然,这更简单:
select s.score,
dense_rank() over (order by s.score desc) as rank
from scores s
order by s.score desc;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句