Zacznij terazZacznij za darmo

Ranking sportowców z wielu krajów

W poprzednim ćwiczeniu użyto RANK do przypisania rankingów jednej grupie sportowców. W rzeczywistych danych często spotykasz jednak wiele grup naraz. Bez partycjonowania danych wartości z jednej grupy wpływają na rankingi pozostałych.

Poza tym RANK pomija liczby w przypadku identycznych wartości, ale bardziej naturalne podejście polega na tym, by ich nie pomijać. Jeśli dwa kraje zajmują ex aequo drugie miejsce, kraj tuż za nimi większość ludzi uzna za trzeci.

To ćwiczenie jest częścią kursu

PostgreSQL – statystyki podsumowujące i funkcje okna

Zobacz kurs

Instrukcje do ćwiczenia

  • Uszereguj sportowców każdego kraju według liczby zdobytych medali – im wyższa liczba, tym wyższy ranking – bez pomijania liczb w przypadku identycznych wartości.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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;
Edytuj i uruchom kod