Kom igångKom igång gratis

Rangordna idrottare från flera länder

I föregående övning använde du RANK för att rangordna en grupp idrottare. I verkliga data stöter du dock ofta på flera grupper. Utan partitionering påverkar en grupps värden rankingen för de övriga.

Dessutom hoppar RANK över tal vid identiska värden, men det vanligaste sättet att rangordna är att inte hoppa över tal. Om två länder delar andraplatsen brukar de flesta anse att nästa land hamnar på tredje plats.

Den här övningen är en del av kursen

PostgreSQL – Sammanfattande statistik och fönsterfunktioner

Visa kurs

Övningsinstruktioner

  • Rangordna varje lands idrottare efter antalet medaljer de har vunnit – ju fler medaljer, desto högre ranking – utan att hoppa över tal vid identiska värden.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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;
Redigera och kör kod