Classificare atleti di più paesi
Nel precedente esercizio hai usato RANK per assegnare le posizioni a un gruppo di atleti. Nei dati reali, però, troverai spesso numerosi gruppi all'interno del tuo insieme di dati. Senza partizionare i dati, i valori di un gruppo influenzeranno le classifiche degli altri.
Inoltre, mentre RANK salta i numeri in caso di valori identici, il modo più naturale di assegnare le posizioni è non saltarli. Se due paesi sono a pari merito al secondo posto, per la maggior parte delle persone il paese successivo è considerato terzo.
Questo esercizio fa parte del corso
Statistiche riepilogative e funzioni finestra in PostgreSQL
Istruzioni dell'esercizio
- Classifica gli atleti di ciascun paese in base al numero di medaglie ottenute — più alto è il conteggio, più alta è la posizione — senza saltare numeri in caso di valori identici.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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;