1. Învăţa
  2. /
  3. Courses
  4. /
  5. SQL 中的数据处理

Connected

exercise

用 CTE 清理查询

在第 2 章中,您生成了一个国家列表,以及每个国家中总进球数超过 10 的比赛数量。该练习中的查询在 FROM 子句中使用了子查询,以便在主查询计数之前先筛选比赛。下面是您当时创建的查询:

SELECT
  c.name AS country,
  COUNT(sub.id) AS matches
FROM country AS c
INNER JOIN (
  SELECT country_id, id 
  FROM match
  WHERE (home_goal + away_goal) >= 10) AS sub
ON c.id = sub.country_id
GROUP BY country;

您可以在主查询之前先"声明"一个或多个子查询为公用表表达式(CTE),这是一种很好的方式,用于组织信息并使逻辑更清晰。

在本练习中,我们将使用一个 CTE 来改写一个类似的查询。

Instrucțiuni

100 XP
  • 完成语法以声明您的 CTE。
  • 在 CTE 中从 match 表选择 country_id 和比赛 id。
  • 使用 country_id 将该 CTE 与 league 表进行 LEFT JOIN。