Рейтингування спортсменів з кількох країн
У попередній вправі ви використовували 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;