開始使用免費開始

計算篩選後的彙總值

當你想在特定篩選條件下計算事件發生次數時,可以善用 SUM()MIN()MAX() 等彙總函式,以及 CASE 表達式。例如,SUM(CASE WHEN ir.IncidentTypeID = 1 THEN 1 ELSE 0 END) 會回傳事件類型 1 的事故次數。若你為每個事件類型各寫一個 SUM(),就等於依事件類型 ID 將資料集做了樞紐轉換。

在這個情境中,管理階層希望我們依事件類型,說明曾經出現多少「大量事故」日與「少量事故」日。管理階層將同一天內同一事件類型發生次數超過 5 次定義為大量事故日;而發生 1 到 5 次則為少量事故日。

本練習屬於課程

SQL Server 的時間序列分析

檢視課程

練習說明

  • 填入一個 CASE 表達式,讓我們能用 SUM() 計算大量事故日與少量事故日的天數。
  • CASE 表達式中,若符合相應的篩選條件就回傳 1,否則回傳 0。
  • 參照欄位時務必加上別名,例如 ir.IncidentDateit.IncidentType

動手互動練習

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

SELECT
	it.IncidentType,
    -- Fill in the appropriate expression
	SUM(___ WHEN ir.NumberOfIncidents > 5 THEN ___ ELSE ___ ___) AS NumberOfBigIncidentDays,
    -- Number of incidents will always be at least 1, so
    -- no need to check the minimum value, just that it's
    -- less than or equal to 5
    SUM(___ WHEN ir.NumberOfIncidents <= 5 THEN ___ ELSE ___ ___) AS NumberOfSmallIncidentDays
FROM dbo.IncidentRollup ir
	INNER JOIN dbo.IncidentType it
		ON ir.IncidentTypeID = it.IncidentTypeID
WHERE
	ir.IncidentDate BETWEEN '2019-08-01' AND '2019-10-31'
GROUP BY
it.IncidentType;
編輯並執行程式碼