始める無料で始める

移動平均を計算する

これまでの累積値ではなく、直近7日間、つまり6日前から本日までの平均インシデント数を確認したいと、マネジメントから依頼がありました。クエリの進行に合わせて参照する枠が動いていくため、これは移動平均と呼ばれます。

SQL Server のウィンドウ関数は時間の範囲を直接扱えないため、1日につき1行であると仮定し、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;
コードを編集して実行