各大区获奖最多的运动员
本练习的目标是按大区展示获奖最多的运动员。要搭建该报告,您需要使用 ROW_NUMBER() 窗口函数。它会为每一行分配递增的整数编号:首行是 1,第二行是 2,以此类推。
该窗口函数的语法为 ROW_NUMBER() OVER (PARTITION BY field ORDER BY field)。请注意,初始函数本身不带参数。
设置正确后,row_num = 1 表示该大区内获奖最多的运动员。如果有多位运动员总数相同,那么并列者中的任意一位都可能作为首条结果出现。请注意,您不能在 HAVING 或 WHERE 子句中直接使用窗口计算,因此需要使用子查询进行筛选。
您可以参考 E:R 图。我们将使用 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 ____;