这里的 OVER 是什么?
窗口函数可以根据任意用于排序的数据变量,为信息创建一个 RANK。设置时,您需要指定用于计算排名的列或计算表达式。方法是在 OVER() 子句中加入 ORDER BY 子句。如下示例:
SELECT
id,
RANK() OVER(ORDER BY home_goal) AS rank
FROM match;
在本练习中,您将根据哪个联赛在一场比赛中平均进球最多来创建一个带排名的数据集。
本练习是课程的一部分
SQL 中的数据处理
练习说明
- 从
league和match中SELECT联赛名称以及平均总进球数。 - 完成窗口函数,使其计算数据库中所有联赛的平均进球数的
RANK()。 - 将排名的
OVER按主客队进球数之和的平均值进行排序。
交互式实操练习
通过完成这段示例代码来试试这个练习。
SELECT
-- Select the league name and average goals scored
___ AS league,
___(___ + ___.away_goal) AS avg_goals,
-- Rank each league over the average goals
___ ___(___ ___ AVG(___.home_goal + ___)) AS league_rank
FROM league AS l
LEFT JOIN match AS m
ON l.id = m.country_id
WHERE m.season = '2011/2012'
GROUP BY l.name
-- Order the query by the rank you created
ORDER BY ___;