Rangliste mit Gewinnenden aus verschiedenen Ländern
In der letzten Aufgabe hast du mit RANK eine Rangliste von einer Gruppe von Athleten und Athletinnen erstellt. In echten Daten hast du es allerdings oft mit mehreren Gruppen zu tun. Wenn du deine Daten nicht aufteilst, beeinflussen die Werte einer Gruppe die Rangfolgen der anderen.
Auch wenn RANK bei gleichen Werten Zahlen überspringt, sollten bei der Rangvergabe eigentlich keine Zahlen ausgelassen werden. Wenn zwei Länder sich den zweiten Platz teilen, würde man das nächste Land in der Regel als drittplatziert erachten.
Diese Übung ist Teil des Kurses
PostgreSQL: Zusammenfassende Statistiken und Fensterfunktionen
Anleitung zur Übung
- Ordne die Teilnehmenden jedes Landes nach der Anzahl der gewonnenen Medaillen – je mehr Medaillen, desto höher der Rang – und lasse bei gleichen Werten keine Rangnummer aus.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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;