1. 学ぶ
  2. /
  3. コース
  4. /
  5. SQL でのデータ操作

Connected

演習

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;

1つ以上のサブクエリは、メインクエリの前に宣言して 共通テーブル式(CTE)として列挙できます。これは情報を整理し、論理的な順序で配置するのに非常に便利です。

この演習では、CTE を使って同様のクエリを書き直してみましょう。

指示

100 XP
  • CTE を宣言するための構文を完成させてください。
  • CTE 内では、match テーブルから country_id と 試合の id を選択します。
  • country_id を使って、その CTE を league テーブルに LEFT JOIN してください。