Inizia subitoInizia gratis

Vedere i tre periodi precedenti

Le funzioni finestra LAG() e LEAD() ci permettono rispettivamente di guardare indietro o avanti nel tempo. Questo ci consente di confrontare i dati periodo su periodo con un'unica query semplice. Ogni chiamata a LAG() o LEAD() restituisce NULL oppure una singola riga. Se vuoi vedere più periodi indietro, puoi includere più chiamate a LAG() o LEAD().

In questo esercizio, vogliamo confrontare il numero di security incident per giorno per i tipi di incidente 1 e 2 durante luglio 2019, in particolare il periodo che inizia il 2 luglio e termina il 31 luglio. Il management vuole vedere una finestra mobile di quattro giorni per tipo di incidente, iniziando due giorni prima e guardando un giorno avanti, per capire se ci sono tendenze significative.

Questo esercizio fa parte del corso

Analisi delle serie temporali in SQL Server

Visualizza corso

Istruzioni dell'esercizio

  • Compila la SQL per restituire il numero di incidenti di due periodi fa.
  • Compila la SQL per restituire il numero di incidenti del periodo precedente.
  • Compila la SQL per restituire il numero di incidenti del periodo successivo.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

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;
Modifica ed esegui il codice