計算移動平均
管理層不想再看從最早到現在的累計總和,而是想看到過去 7 天的「平均」事故數——也就是從 6 天前開始到今天為止。由於這是在查詢過程中會隨時間滑動的指定框架,因此稱為「移動平均」。
SQL Server 無法在視窗函式中直接以時間區間為框架,因此我們需要假設每天一列資料,並使用 ROWS 子句。
本練習屬於課程
SQL Server 的時間序列分析
練習說明
- 填入正確的視窗函式,計算從 6 天前到今天(目前列)的移動平均。
- 填入視窗框架設定,包括
ROWS子句、視窗框架的 preceding 與 following。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
SELECT
ir.IncidentDate,
ir.IncidentTypeID,
ir.NumberOfIncidents,
-- Fill in the correct window function
___(ir.NumberOfIncidents) OVER (
PARTITION BY ir.IncidentTypeID
ORDER BY ir.IncidentDate
-- Fill in the three parts of the window frame
___ BETWEEN ___ AND ___
) AS MeanNumberOfIncidents
FROM dbo.IncidentRollup ir
INNER JOIN dbo.Calendar c
ON ir.IncidentDate = c.Date
WHERE
c.CalendarYear = 2019
AND c.CalendarMonth IN (7, 8)
AND ir.IncidentTypeID = 1
ORDER BY
ir.IncidentTypeID,
ir.IncidentDate;