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
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;