Skip to content
Home ยป SQL Leet Code Rank Scores Problem

SQL Leet Code Rank Scores Problem

SQL Leet code problem: Rank Scores

Write an SQL query to rank the scores. The ranking should be calculated according to the following rules:

  • The scores should be ranked from the highest to the lowest.
  • If there is a tie between two scores, both should have the same ranking.
  • After a tie, the next ranking number should be the next consecutive integer value. In other words, there should be no holes between ranks.

Return the result table ordered by score in descending order.




As you can see here we have one table named scores.

Table: Scores

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| score       | decimal |
+-------------+---------+

id is the primary key for this table. Each row of this table contains the score of a game. Score is a floating point value with two decimal places.

The query result format is in the following example.

Input: 
Scores table:
+----+-------+
| id | score |
+----+-------+
| 1  | 3.50  |
| 2  | 3.65  |
| 3  | 4.00  |
| 4  | 3.85  |
| 5  | 4.00  |
| 6  | 3.65  |
+----+-------+
Output: 
+-------+------+
| score | rank |
+-------+------+
| 4.00  | 1    |
| 4.00  | 1    |
| 3.85  | 2    |
| 3.65  | 3    |
| 3.65  | 3    |
| 3.50  | 4    |
+-------+------+


Solution:

Lets create the table named scores first and then insert sample records into this table.

Create table scores(id int primary key, score decimal(10,2))
insert into scores (id, score) values
(1, 3.50), 
(2, 3.65), 
(3, 4.00), 
(4, 3.85), 
(5, 4.00), 
(6, 3.65)

Now we have a table as shown below.

select * from scores

Now we will write SQL query to get the desired output. It uses DESNSE_RANK Window function, which assign ranks to rows in partitions with no gaps in the ranking values.

Select score, dense_rank() over(order by score desc) as rank 
from scores

 

 




Also Read..

DESNSE_RANK

ROW_NUMBER

 

 

 

 578 total views,  1 views today

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.