Začněte nyníZačněte zdarma

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

Zobrazit kurz

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;
Upravit a spustit kód