178. Rank Scores

Description

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`.

Constraints

Approach

  • GeeksforGeeks

  • ProgramCreek

  • YouTube

Examples

Input:

{"headers": {"Scores": ["Id", "Score"]}, "rows": {"Scores": [[1, 3.50], [2, 3.65], [3, 4.00], [4, 3.85], [5, 4.00], [6, 3.65]]}}

Output:

{"headers": ["Score", "Rank"], "values": [[4.00, 1], [4.00, 1], [3.85, 2], [3.65, 3], [3.65, 3], [3.50, 4]]}

Solutions

# MySQL query statement

SELECT Score, 
    (SELECT COUNT(DISTINCT Score) FROM Scores WHERE Score >= s.Score ) AS `Rank` 
FROM Scores s 
ORDER BY Score DESC;

Follow up

Last updated

Was this helpful?