ПочатиПочніть безкоштовно

Рейтингування спортсменів з кількох країн

У попередній вправі ви використовували RANK, щоб призначити місця одній групі спортсменів. У реальних даних, однак, ви часто матимете багато груп у межах одного набору даних. Без розбиття даних одна група впливатиме на рейтинг іншої.

Крім того, хоча RANK пропускає номери у разі однакових значень, природніше призначати місця без пропусків. Якщо дві країни ділять друге місце, наступну за ними зазвичай вважають третьою.

Ця вправа є частиною курсу

Підсумкова статистика та віконні функції в PostgreSQL

Переглянути курс

Інструкції до вправи

  • Проставте місця спортсменам у межах кожної країни за кількістю здобутих медалей — чим більша кількість, тим вище місце — без пропуску номерів у разі однакових значень.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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;
Редагувати та запускати код