Výpočet klouzavých průměrů
Místo průběžného součtu od počátku záznamu až do teď by vedení rádo vidělo průměrný počet incidentů za posledních 7 dní – tedy od 6 dní nazpět až po aktuální datum. Protože jde o výpočet v určitém rámci, který se v průběhu dotazu mění, nazývá se tento přístup klouzavý průměr.
SQL Server neumožňuje pracovat s časovými rozsahy v okenních funkcích, takže budeme předpokládat, že na každý den připadá právě jeden řádek, a použijeme klauzuli ROWS.
Toto cvičení je součástí kurzu
Time Series Analysis in SQL Server
Pokyny k cvičení
- Doplň správnou okenní funkci pro výpočet klouzavého průměru za období od 6 dní nazpět až po dnešek (aktuální řádek).
- Doplň definici okenního rámce včetně klauzule
ROWS, počtu předcházejících řádků a následujících řádků.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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;