Kom igångKom igång gratis

Visa de tre föregående perioderna

Fönsterfunktionerna LAG() och LEAD() gör det möjligt att blicka bakåt respektive framåt i tiden. Det innebär att du kan jämföra data period för period i en enda, enkel fråga. Varje anrop till LAG() eller LEAD() returnerar antingen NULL eller en enda rad. Om du vill se flera perioder bakåt kan du använda flera anrop till LAG() eller LEAD().

I den här övningen vill vi jämföra antalet säkerhetsincidenter per dag för incidenttyperna 1 och 2 under juli 2019 – närmare bestämt perioden från och med den 2 juli till och med den 31 juli. Ledningen vill se ett rullande fyradagarsfönster per incidenttyp för att identifiera eventuella trender, med start två dagar innan och en dag framåt.

Den här övningen är en del av kursen

Tidsserieanalys i SQL Server

Visa kurs

Övningsinstruktioner

  • Fyll i SQL-koden för att returnera antalet incidenter från två perioder sedan.
  • Fyll i SQL-koden för att returnera antalet incidenter från föregående period.
  • Fyll i SQL-koden för att returnera antalet incidenter från nästa period.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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;
Redigera och kör kod