Zobrazení tří předchozích období
Okenní funkce LAG() a LEAD() umožňují pohled do minulosti, respektive budoucnosti. Díky tomu můžeš porovnávat data mezi jednotlivými obdobími v jediném přehledném dotazu. Každé volání LAG() nebo LEAD() vrátí buď hodnotu NULL, nebo hodnotu z jednoho řádku. Pokud chceš zobrazit více období najednou, jednoduše přidáš více volání LAG() nebo LEAD().
V tomto cvičení porovnáme počet bezpečnostních incidentů po dnech pro typy incidentů 1 a 2 během července 2019 – konkrétně v období od 2. do 31. července. Vedení chce vidět klouzavé čtyřdenní okno podle typu incidentu, aby bylo možné odhalit případné výrazné trendy. Okno začíná dva dny před aktuálním datem a zahrnuje i jeden den dopředu.
Toto cvičení je součástí kurzu
Time Series Analysis in SQL Server
Pokyny k cvičení
- Doplň SQL pro vrácení počtu incidentů z období před dvěma kroky.
- Doplň SQL pro vrácení počtu incidentů z předchozího období.
- Doplň SQL pro vrácení počtu incidentů z následujícího období.
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,
-- Fill in two periods ago
___(ir.___, ___) OVER (
PARTITION BY ir.IncidentTypeID
ORDER BY ir.IncidentDate
) AS Trailing2Day,
-- Fill in one period ago
___(ir.___, ___) OVER (
PARTITION BY ir.IncidentTypeID
ORDER BY ir.IncidentDate
) AS Trailing1Day,
ir.NumberOfIncidents AS CurrentDayIncidents,
-- Fill in next period
___(ir.___, ___) OVER (
PARTITION BY ir.IncidentTypeID
ORDER BY ir.IncidentDate
) AS NextDay
FROM dbo.IncidentRollup ir
WHERE
ir.IncidentDate >= '2019-07-01'
AND ir.IncidentDate <= '2019-07-31'
AND ir.IncidentTypeID IN (1, 2)
ORDER BY
ir.IncidentTypeID,
ir.IncidentDate;