Atleten uit meerdere landen rangschikken
In de vorige oefening gebruikte je RANK om rankings toe te kennen aan één groep atleten. In echte data kom je echter vaak meerdere groepen binnen je gegevens tegen. Zonder je data te partitioneren, beïnvloeden de waarden van de ene groep de rankings van de andere.
Bovendien slaat RANK nummers over bij gelijke waarden, terwijl het natuurlijker is om geen nummers over te slaan. Als twee landen op de tweede plaats staan, wordt het land daarna door de meesten 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.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in 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;