여러 국가의 선수 순위 매기기
이전 연습 문제에서는 한 그룹의 선수들에게 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;