시작하기무료로 시작하기

여러 국가의 선수 순위 매기기

이전 연습 문제에서는 한 그룹의 선수들에게 RANK로 순위를 매겼어요. 하지만 실제 데이터에서는 보통 여러 개의 그룹이 함께 존재해요. 데이터를 파티션하지 않으면, 한 그룹의 값이 다른 그룹의 순위에 영향을 주게 됩니다.

또한 RANK는 동일한 값이 있을 때 숫자를 건너뛰지만, 많은 경우 더 자연스러운 방식은 숫자를 건너뛰지 않는 것이에요. 두 국가가 공동 2위라면, 그 다음 국가는 대부분의 사람들이 3위로 간주합니다.

이 연습은 강의의 일부입니다

PostgreSQL 요약 통계와 윈도 함수

강의 보기

연습 안내

  • 각 country의 선수를 획득한 medal 수로 순위를 매기세요. 수가 높을수록 순위가 높아지며, 동일한 값이 있어도 순위 번호를 건너뛰지 않도록 하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

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;
코드 편집 및 실행