Porównanie poprzednich i przyszłych okresów
Funkcje okna LAG() i LEAD() umożliwiają odpowiednio cofanie się lub przesuwanie do przodu w czasie. Dzięki temu można porównywać dane z kolejnych okresów w jednym, przejrzystym zapytaniu.
W tym ćwiczeniu porównasz liczbę incydentów bezpieczeństwa według dnia dla typów 1 i 2 w lipcu 2019 roku – konkretnie w okresie od 2 do 31 lipca.
To ćwiczenie jest częścią kursu
Analiza szeregów czasowych w SQL Server
Instrukcje do ćwiczenia
- Uzupełnij funkcję okna tak, aby zwracała liczbę incydentów z poprzedniego dnia, z podziałem na identyfikator typu incydentu i posortowaną według daty incydentu.
- Uzupełnij funkcję okna tak, aby zwracała liczbę incydentów z następnego dnia, z podziałem na identyfikator typu incydentu i posortowaną według daty incydentu.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
SELECT
ir.IncidentDate,
ir.IncidentTypeID,
-- Get the prior day's number of incidents
___(ir.___, ___) OVER (
-- Partition by incident type ID
PARTITION BY ir.___
-- Order by incident date
ORDER BY ir.___
) AS PriorDayIncidents,
ir.NumberOfIncidents AS CurrentDayIncidents,
-- Get the next day's number of incidents
___(ir.___, ___) OVER (
-- Partition by incident type ID
PARTITION BY ir.___
-- Order by incident date
ORDER BY ir.___
) AS NextDayIncidents
FROM dbo.IncidentRollup ir
WHERE
ir.IncidentDate >= '2019-07-02'
AND ir.IncidentDate <= '2019-07-31'
AND ir.IncidentTypeID IN (1, 2)
ORDER BY
ir.IncidentTypeID,
ir.IncidentDate;