開始使用免費開始

使用 CASE 與 AVG 推導分率

CASE 陳述式會回傳你在 THEN 子句中指定的任何值。當它與彙總敘述結合使用時,能進行非常強大的計算與資料處理。你可以做的一個關鍵任務,是在 AVG 函式中使用 CASE,來計算資料庫中某項資訊所佔的比例。

以下是設定方式的範例:

AVG(CASE WHEN condition_is_met THEN 1
         WHEN condition_is_not_met THEN 0 END)

採用這種作法時,務必要準確指定哪些紀錄算作 0,否則你的計算結果可能不正確!

你的任務是檢視各國的勝、敗、平次數。matches 資料表已過濾為只包含 2013/2014 與 2014/2015 賽季的所有比賽。

本練習屬於課程

SQL 資料操作

檢視課程

練習說明

  • AVG() 函式中,完成 CASE 陳述式:檢查 m.home_goal 是否不等於 m.away_goal,若條件成立則指定值為 0
  • 以同樣方式比較 '2014/2015' 的主客隊進球數,並將別名設為 ties_2014_2015

動手互動練習

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

SELECT 
	c.name AS country,
    -- Calculate the fraction of tied games in each season
	___(___ ___ m.season='2013/2014' AND m.home_goal = m.away_goal THEN 1
			WHEN m.season='2013/2014' AND m.home_goal ___ m.away_goal THEN ___
			END) AS ties_2013_2014,
	___(___ ___ m.season='2014/2015' ___ ___ = ___ ___ ___
			WHEN m.season='2014/2015' ___ m.home_goal != m.away_goal THEN ___
			___) AS ___
FROM country AS c
LEFT JOIN matches AS m
ON c.id = m.country_id
GROUP BY country;
編輯並執行程式碼