各地區獲獎最多的選手
這個練習的目標是顯示每個地區獲獎最多的選手。要建立這個報表,你需要運用 ROW_NUMBER() 視窗函式。它會以遞增的整數為每一列編號,第一列是 1,第二列是 2,以此類推。
這個視窗函式的語法是 ROW_NUMBER() OVER (PARTITION BY field ORDER BY field)。請注意,函式本體不需要任何引數。
設定正確時,row_num = 1 就代表該地區獲獎最多的選手。若有多位選手總數相同,任何一位並列選手都有可能出現在最上方結果。請注意,你不能在 HAVING 或 WHERE 子句中使用視窗計算,因此需要用子查詢來篩選。
需要時可參考 E:R Diagram。我們會使用 summer_games_clean 以避免處理空值。
本練習屬於課程
SQL 報表製作
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
SELECT
-- Query region, athlete_name, and total gold medals
____,
____ AS athlete_name,
____ AS total_golds,
-- Assign a regional rank to each athlete
____ AS row_num
FROM ____ AS s
JOIN ____ AS a
ON ____
JOIN ____ AS c
ON ____
GROUP BY ____;