Rangliste der Athleten aus mehreren Ländern
In der vorherigen Übung hast du RANK
verwendet, um einer Gruppe von Sportlern eine Rangfolge zuzuweisen. In realen Daten findest du jedoch oft zahlreiche Gruppen innerhalb deiner Daten. Wenn du deine Daten nicht aufteilst, beeinflussen die Werte der einen Gruppe die Rangfolge der anderen.
Auch wenn RANK
bei identischen Werten Zahlen überspringt, ist es die natürlichste Art, Rangfolgen zu vergeben, keine Zahlen zu überspringen. Wenn zwei Länder gleichauf auf dem zweiten Platz liegen, wird das Land nach ihnen von den meisten Menschen als drittes Land angesehen.
Diese Übung ist Teil des Kurses
PostgreSQL Übersichtsstatistiken und Fensterfunktionen
Anleitung zur Übung
- Ordne die Athletinnen und Athleten jedes Landes nach der Anzahl der Medaillen, die sie gewonnen haben - je höher die Anzahl, desto höher der Rang - ohne Zahlen zu überspringen, wenn die Werte identisch sind.
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
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;