移動平均を計算する
これまでの累積値ではなく、直近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;