開始使用免費開始

把 CTE 串在一起

現在你已經建立了兩個子查詢,用來找出主場與客場的對手,接下來要把 homeaway 這兩個子查詢重整為「共通資料表運算式」(Common Table Expressions,CTE)。你會注意到主查詢包含 SELECT DISTINCT 這個片語。若不僅限於 DISTINCT 的比賽,對於每一場比賽,你可能會得到重複的記錄。

繼續完成這個查詢,擷取曼聯在 2014/2015 賽季參與的所有比賽。

本練習屬於課程

SQL 資料操作

檢視課程

練習說明

  • 在主查詢之前宣告 homeaway 兩個 CTE。
  • 使用 LEFT JOIN 將你的 CTE 與比賽資料表連接。
  • 在主查詢中,選取來自 CTE 的相關資料。
  • 在主查詢中,選取來自 match 的日期、來自 CTE 的球隊名稱,以及來自 match 的主場/客場進球數。

動手互動練習

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

-- Set up the home team CTE
___ ___ ___ (
  SELECT m.id, t.team_long_name,
	  CASE WHEN m.home_goal > m.away_goal THEN 'MU Win'
		   WHEN m.home_goal < m.away_goal THEN 'MU Loss' 
  		   ELSE 'Tie' END AS outcome
  FROM match AS m
  LEFT JOIN team AS t ON m.hometeam_id = t.team_api_id),
-- Set up the away team CTE
___ ___ (
  SELECT m.id, t.team_long_name,
	  CASE WHEN m.home_goal > m.away_goal THEN 'MU Loss'
		   WHEN m.home_goal < m.away_goal THEN 'MU Win' 
  		   ELSE 'Tie' END AS outcome
  FROM match AS m
  LEFT JOIN team AS t ON m.awayteam_id = t.team_api_id)
-- Select the date, team names and goals
SELECT DISTINCT
    ___.___,
    ___.___ AS home_team_name,
    ___.___ AS away_team_name,
    ___.___,
    m.away_goal
-- Join the CTEs onto the match table
FROM match AS m
___ JOIN ___ ON m.id = ___
___ JOIN ___ ON m.id = ___
WHERE m.season = '2014/2015'
      AND (home.team_long_name = 'Manchester United' 
           OR away.team_long_name = 'Manchester United');
編輯並執行程式碼