開始使用免費開始

Subqueries 無所不在

在足球聯賽中,賽事會分成不同的「階段」。獲勝的球隊會從一個階段晉級到下一個階段,直到進入決賽。在每個階段,勝負的重要性都會比前一個更高。match 資料表包含每場比賽所處不同階段的相關資料。

接下來的 3 個練習中,你將建立一個查詢,並在 SELECT、FROM 與 WHERE 子句各放入一個子查詢。當賽事從一個階段進入下一個階段、重要性提升時,場均進球數會改變嗎?

這個查詢會重複使用同一個子查詢,好讓你練習不同的放置位置。每個複本都會再次讀取 match 資料表,因此在實務上,你會只計算一次整體平均,如第 4 章使用視窗函式所示。

本練習屬於課程

SQL 資料操作

檢視課程

練習說明

  • 在 SELECT 子查詢中取出總進球數的平均值。
  • 在主查詢中計算特定 stage 的「平均」總進球數。
  • 將兩個子查詢與主查詢都「過濾」為只包含 2012/2013 賽季的資料。
  • 以 m.stage 欄位對查詢進行 GROUP。

動手互動練習

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

SELECT 
	-- Select the stage and average goals for each stage
	m.stage,
    ROUND(___(___ + m.away_goal),2) AS avg_goals,
    -- Select the average overall goals for the 2012/2013 season
    ROUND((SELECT ___(___ + away_goal) 
           FROM match 
           WHERE season = ___),2) AS overall
FROM match AS m
-- Filter for the 2012/2013 season
WHERE ___ = ___
-- Group by stage
GROUP BY ___;
編輯並執行程式碼