CommencezCommencez gratuitement

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

Voir le cours

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;
Modifier et exécuter le code