始める無料で始める

ネストされたサブクエリを使った CTE

複数のサブクエリを FROM 句にネストして並べると、クエリが長く、複雑になり、読みにくくなります。

多くのクエリは保存して再利用することを前提に書かれています。そのため、クエリを整理することは、スムーズな操作につながります。サブクエリを CTE としてまとめることで、今後の時間と手間を節約し、混乱を防ぐことができます。

この演習はコースの一部です

SQL のデータ操作

コースを見る

演習の手順

  • '2013/2014'8 月に行われた試合の総得点を計算する CTE を宣言してください。
  • 内側のサブクエリで、'2013/2014' シーズンの 8 月の試合のみを抽出するフィルタリングを行いましょう。
  • match_list CTE から country_id を使って、CTE をリーグテーブルに 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;
コードを編集して実行