Atleten uit meerdere landen rangschikken
In de vorige oefening gebruikte je RANK om rangnummers toe te kennen aan één groep atleten. In echte data kom je echter vaak meerdere groepen tegen. Zonder je data te partitioneren, beïnvloeden de waarden van de ene groep de rangschikking van de andere.
Bovendien slaat RANK nummers over bij gelijke waarden, terwijl het natuurlijker is om juist geen nummers over te slaan. Als twee landen gedeeld tweede zijn, wordt het land na hen door de meeste mensen als derde beschouwd.
Deze oefening maakt deel uit van de cursus
PostgreSQL samenvattingsstatistieken en vensterfuncties
Oefeninstructies
- Rangschik de atleten van elk land op basis van het aantal medailles dat ze hebben behaald — hoe hoger het aantal, hoe hoger de rang — zonder nummers over te slaan bij gelijke waarden.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
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;