包含嵌套子查询的 CTE
如果您在 FROM 子句中罗列多个嵌套语句的子查询,查询就很可能会变得冗长、复杂且难以阅读。
由于很多查询是为了保存并在未来重复运行而编写的,良好的组织对顺畅的工作流至关重要。将子查询整理为 CTE,从长远看能为您节省时间、空间,并减少困惑!
本练习是课程的一部分
SQL 中的数据处理
练习说明
- 声明一个 CTE,用于计算
'2013/2014'赛季 8 月 比赛的总进球数。 - 在内部子查询上进行筛选,仅选择
'2013/2014'赛季 8 月 的比赛。 - 使用来自
match_listCTE 的country_id,将该 CTE 与 league 表进行LEFT JOIN。
交互式实操练习
通过完成这段示例代码来试试这个练习。
-- Set up your CTE
___ match_list ___ (
SELECT
country_id,
(home_goal + away_goal) AS goals
FROM match
-- Create a list of match IDs to filter data in the CTE
WHERE id IN (
SELECT ___
FROM ___
WHERE season = ___ AND EXTRACT(MONTH FROM ___) = ___))
-- Select the league name and average of goals in the CTE
SELECT
___,
___(___)
FROM league AS l
-- Join the CTE onto the league table using country_id
LEFT JOIN ___ ON l.id = match_list.___
GROUP BY l.name;