開始使用免費開始

含巢狀子查詢的 CTE

如果你在 FROM 子句裡列出多個帶巢狀語句的子查詢,查詢很可能會變得冗長、複雜,而且難以閱讀。

由於許多查詢是打算儲存並在未來重複執行,妥善的結構化對順暢的工作流程至關重要。把子查詢整理成 CTE,長期下來能為你省下時間、版面,並減少混淆!

本練習屬於課程

SQL 資料操作

檢視課程

練習說明

  • 宣告一個 CTE,用來計算 '2013/2014' 賽季中 8 月比賽的進球數。
  • 在內層子查詢中篩選,只選取 '2013/2014' 賽季 8 月的比賽。
  • 使用 match_list CTE 的 country_id,將該 CTE LEFT JOIN 到 league 資料表。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

-- 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;
編輯並執行程式碼