| ID | Title | Difficulty | |
|---|---|---|---|
| Loading... | |||
178. Rank Scores
Medium
LeetCode
Database
Problem
Write a SQL query to rank scores. If there is a tie between two scores, both should have the same ranking. Note that after a tie, the next ranking number should be the next consecutive integer value. In other words, there should be no “holes” between ranks.
+----+-------+
| Id | Score |
+----+-------+
| 1 | 3.50 |
| 2 | 3.65 |
| 3 | 4.00 |
| 4 | 3.85 |
| 5 | 4.00 |
| 6 | 3.65 |
+----+-------+
For example, given the above Scores table, your query should generate the following report (order by highest score):
+-------+---------+
| score | Rank |
+-------+---------+
| 4.00 | 1 |
| 4.00 | 1 |
| 3.85 | 2 |
| 3.65 | 3 |
| 3.65 | 3 |
| 3.50 | 4 |
+-------+---------+
Important Note: For MySQL solutions, to escape reserved words used as column names, you can use an apostrophe before and after the keyword. For example Rank.
Code
注意Rank
SELECT
s.Score AS score,
(SELECT COUNT(DISTINCT Score) FROM Scores WHERE Score >= s.Score) AS `Rank`
FROM Scores AS s
ORDER BY s.Score DESC;
按 <- 键看上一题!
177. Nth Highest Salary
按 -> 键看下一题!
179. Largest Number