依獎牌數替運動員排名
在第 1 章,你使用過 ROW_NUMBER 依獲得的獎牌數替運動員排名。不過,ROW_NUMBER 會替獲得相同獎牌數的運動員指派不同的序號,因此不適合用來「排名」。如果兩位運動員的獎牌數相同,他們應該有相同的名次。
本練習屬於課程
PostgreSQL 統計摘要與視窗函式
練習說明
- 依每位運動員獲得的獎牌數進行排名——數量越多,名次越前;數量相同者名次相同。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
WITH Athlete_Medals AS (
SELECT
Athlete,
COUNT(*) AS Medals
FROM Summer_Medals
GROUP BY Athlete)
SELECT
Athlete,
Medals,
-- Rank athletes by the medals they've won
___ OVER (ORDER BY ___ DESC) AS Rank_N
FROM Athlete_Medals
ORDER BY Medals DESC;