Aan de slagGa gratis aan de slag

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

Cursus bekijken

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;
Code bewerken en uitvoeren