SUM() でランニングトータル
ウィンドウ関数の強力な使い方の一つが、ランニングトータル(ある期間にわたる値の累積)を計算することです。ここでは、2019年7月について、各日付・各インシデント種別ごとの発生件数と、種別ごとの累計件数をウィンドウ関数で求めたいと考えています。ウィンドウ関数を使えば、この問題を1つのクエリで解決できます。
この演習はコースの一部です
SQL Serverで学ぶ時系列分析
演習の手順
- 正しいウィンドウ関数を記入してください。
- ウィンドウ関数の
PARTITION BY句を、インシデント種別IDでパーティション分割するように記入してください。 - ウィンドウ関数の
ORDER BY句を、インシデント日付(デフォルトの昇順)で並べ替えるように記入してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
SELECT
ir.IncidentDate,
ir.IncidentTypeID,
ir.NumberOfIncidents,
-- Get the total number of incidents
___(ir.NumberOfIncidents) OVER (
-- Do this for each incident type ID
PARTITION BY ir.___
-- Sort by the incident date
ORDER BY ir.___
) AS NumberOfIncidents
FROM dbo.IncidentRollup ir
INNER JOIN dbo.Calendar c
ON ir.IncidentDate = c.Date
WHERE
c.CalendarYear = 2019
AND c.CalendarMonth = 7
AND ir.IncidentTypeID IN (1, 2)
ORDER BY
ir.IncidentTypeID,
ir.IncidentDate;