Zacznij terazZacznij za darmo

Podgląd trzech poprzednich okresów

Funkcje okna LAG() i LEAD() pozwalają odpowiednio cofać się lub przesuwać w czasie. Dzięki temu możesz porównywać dane z kolejnych okresów w jednym, przejrzystym zapytaniu. Każde wywołanie LAG() lub LEAD() zwraca wartość NULL lub dane z pojedynczego wiersza. Jeśli chcesz zobaczyć kilka wcześniejszych okresów, wystarczy użyć wielu wywołań LAG() lub LEAD().

W tym ćwiczeniu porównasz liczbę incydentów bezpieczeństwa według dni dla typów 1 i 2 w lipcu 2019 roku – konkretnie w okresie od 2 do 31 lipca. Kierownictwo chce zobaczyć kroczące okno czterdniowe według typu incydentu, aby sprawdzić, czy widać istotne trendy – obejmujące dwa dni wstecz i jeden dzień do przodu.

To ćwiczenie jest częścią kursu

Analiza szeregów czasowych w SQL Server

Zobacz kurs

Instrukcje do ćwiczenia

  • Uzupełnij kod SQL, aby zwrócić liczbę incydentów sprzed dwóch okresów.
  • Uzupełnij kod SQL, aby zwrócić liczbę incydentów z poprzedniego okresu.
  • Uzupełnij kod SQL, aby zwrócić liczbę incydentów z następnego okresu.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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;
Edytuj i uruchom kod