Classement des athlètes de plusieurs pays
Dans l'exercice précédent, vous avez utilisé RANK
pour attribuer des classements à un groupe d'athlètes. Dans les données réelles, cependant, 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, bien que RANK
ignore les numéros en cas de valeurs identiques, la manière la plus naturelle d'attribuer des classements consiste à ne pas ignorer les numéros. Si deux pays sont à égalité en deuxième position, le pays qui les suit est généralement considéré comme troisième par la plupart des gens.
Cet exercice fait partie du cours
Statistiques récapitulatives et fonctions de fenêtrage PostgreSQL
Instructions
- Classez les athlètes de chaque pays en fonction du nombre de médailles qu'ils ont remportées : plus le nombre est élevé, plus le classement est élevé, sans omettre de numéros en cas de valeurs identiques.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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;