CommencezCommencez gratuitement

Voir les trois périodes précédentes

Les fonctions de fenêtrage LAG() et LEAD() permettent respectivement de regarder en arrière ou en avant dans le temps. Cela nous donne la possibilité de comparer les données d'une période à l'autre dans une seule requête simple. Chaque appel à LAG() ou LEAD() renvoie soit NULL, soit une seule ligne. Si vous souhaitez remonter plusieurs périodes, vous pouvez inclure plusieurs appels à LAG() ou LEAD().

Dans cet exercice, nous voulons comparer le nombre d'incidents de sécurité par jour pour les types d'incident 1 et 2 en juillet 2019, plus précisément la période du 2 juillet au 31 juillet. La direction souhaite voir une fenêtre glissante de quatre jours par type d'incident pour repérer d'éventuelles tendances marquées, en commençant deux jours avant et en regardant un jour après.

Cette activité fait partie du cours

Analyse de séries chronologiques dans SQL Server

Voir le cours

Instructions de l’exercice

  • Complétez la requête SQL pour retourner le nombre d'incidents d'il y a deux périodes.
  • Complétez la requête SQL pour retourner le nombre d'incidents de la période précédente.
  • Complétez la requête SQL pour retourner le nombre d'incidents de la période suivante.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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;
Modifier et exécuter le code