НачатьНачать бесплатно

Ранжирование спортсменов из разных стран

В предыдущем упражнении вы использовали 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;
Редактировать и запускать код