開始使用免費開始

計算移動平均

管理層不想再看從最早到現在的累計總和,而是想看到過去 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;
編輯並執行程式碼