SQL offers powerful functions for ranking and sorting data. The "Rank Scores" problem on LeetCode is a perfect case to explore these functionalities. We're tasked to rank game scores stored in a table, following specific rules. Let's dive into the problem and provide solutions in different SQL dialects.
Problem Overview
We need to rank scores from the Scores table. The ranking should be from highest to lowest, with ties receiving the same rank and no gaps in ranking numbers after a tie.
The Scores Table Structure
id | score |
---|---|
1 | 3.50 |
2 | 3.65 |
3 | 4.00 |
SQL Query Solutions
To solve this, we can use window functions available in modern SQL databases. Specifically, we'll use the DENSE_RANK function, which ranks items without leaving gaps in ranking numbers.
MySQL Solution
In MySQL, the solution would look like this:
SELECT
score,
DENSE_RANK() OVER (ORDER BY score DESC) AS rank
FROM
Scores;
This query uses the DENSE_RANK window function to assign ranks to each score, ordered in descending order. PostgreSQL Solution
PostgreSQL also supports window functions, and the query will be similar:
-- Write your PostgreSQL query statement below
SELECT
score,
DENSE_RANK() OVER (ORDER BY score DESC) AS rank
FROM
Scores;
Oracle Solution
Oracle SQL uses a similar syntax for window functions:
/* Write your PL/SQL query statement below */
SELECT
score,
DENSE_RANK() OVER (ORDER BY score DESC) AS rank
FROM
Scores;
Expected Output
The output ranks the scores from highest to lowest, with ties receiving the same rank:
score | rank |
---|---|
4.00 | 1 |
4.00 | 1 |
3.85 | 2 |
3.65 | 3 |
3.65 | 3 |
3.50 | 4 |
Conclusion
The "Rank Scores" problem is a great exercise to get familiar with ranking functions in SQL. By using DENSE_RANK, we can easily assign ranks to data while handling ties appropriately. This type of problem is common in real-world scenarios where data needs to be ranked or sorted according to specific rules. The solutions across different SQL dialects are quite similar, showcasing the standardization of SQL functionality in different database systems.
Comments
Post a Comment