Ranking sportowców z wielu krajów
W poprzednim ćwiczeniu użyto RANK do przypisania rankingów jednej grupie sportowców. W rzeczywistych danych często spotykasz jednak wiele grup naraz. Bez partycjonowania danych wartości z jednej grupy wpływają na rankingi pozostałych.
Poza tym RANK pomija liczby w przypadku identycznych wartości, ale bardziej naturalne podejście polega na tym, by ich nie pomijać. Jeśli dwa kraje zajmują ex aequo drugie miejsce, kraj tuż za nimi większość ludzi uzna za trzeci.
To ćwiczenie jest częścią kursu
PostgreSQL – statystyki podsumowujące i funkcje okna
Instrukcje do ćwiczenia
- Uszereguj sportowców każdego kraju według liczby zdobytych medali – im wyższa liczba, tym wyższy ranking – bez pomijania liczb w przypadku identycznych wartości.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
WITH Athlete_Medals AS (
SELECT
Country, Athlete, COUNT(*) AS Medals
FROM Summer_Medals
WHERE
Country IN ('JPN', 'KOR')
AND Year >= 2000
GROUP BY Country, Athlete
HAVING COUNT(*) > 1)
SELECT
Country,
-- Rank athletes in each country by the medals they've won
___,
___ OVER (PARTITION BY ___
ORDER BY Medals DESC) AS Rank_N
FROM Athlete_Medals
ORDER BY Country ASC, RANK_N ASC;