Obliczanie średniej kroczącej
Zamiast analizować sumę bieżącą narastającą od początku do chwili obecnej, kierownictwo chciałoby zobaczyć średnią liczbę incydentów z ostatnich 7 dni – czyli od 6 dni temu do dnia bieżącego. Ponieważ obliczenia dotyczą określonego okna przesuwającego się w trakcie wykonywania zapytania, mówimy tu o średniej kroczącej.
SQL Server nie obsługuje zakresów czasowych w funkcjach okna, dlatego przyjmiemy założenie, że każdy dzień odpowiada dokładnie jednemu wierszowi, i skorzystamy z klauzuli ROWS.
To ćwiczenie jest częścią kursu
Analiza szeregów czasowych w SQL Server
Instrukcje do ćwiczenia
- Uzupełnij odpowiednią funkcję okna, która oblicza średnią kroczącą dla okresu od 6 dni temu do dnia bieżącego (bieżący wiersz).
- Uzupełnij definicję ramki okna: dodaj klauzulę
ROWS, liczbę poprzednich wierszy oraz liczbę następnych wierszy.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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;