Zacznij terazZacznij za darmo

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

Zobacz kurs

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