Classer des athlètes de plusieurs pays
Dans l'exercice précédent, vous avez utilisé RANK pour attribuer des rangs à un seul groupe d'athlètes. Dans les données réelles, toutefois, vous trouverez souvent de nombreux groupes au sein de vos données. Sans partitionner vos données, les valeurs d'un groupe influenceront le classement des autres.
De plus, même si RANK saute des numéros en cas de valeurs identiques, la façon la plus naturelle d'attribuer des rangs est de ne pas en sauter. Si deux pays sont à égalité en deuxième place, la plupart des gens considèrent que le pays suivant est troisième.
Cette activité fait partie du cours
Fonctions de synthèse et de fenêtre dans PostgreSQL
Instructions de l’exercice
- Classez les athlètes de chaque pays selon le nombre de médailles qu'ils ont remportées — plus le nombre est élevé, plus le rang est élevé — sans sauter de numéros en cas de valeurs identiques.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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;