开始使用免费开始使用

各大区获奖最多的运动员

本练习的目标是按大区展示获奖最多的运动员。要搭建该报告,您需要使用 ROW_NUMBER() 窗口函数。它会为每一行分配递增的整数编号:首行是 1,第二行是 2,以此类推。

该窗口函数的语法为 ROW_NUMBER() OVER (PARTITION BY field ORDER BY field)。请注意,初始函数本身不带参数。

设置正确后,row_num = 1 表示该大区内获奖最多的运动员。如果有多位运动员总数相同,那么并列者中的任意一位都可能作为首条结果出现。请注意,您不能在 HAVINGWHERE 子句中直接使用窗口计算,因此需要使用子查询进行筛选。

您可以参考 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 ____;
编辑并运行代码