Voir les périodes passées et futures
Les fonctions de fenêtre LAG() et LEAD() permettent de regarder respectivement en arrière ou en avant dans le temps. Cela nous permet de comparer des données d’une période à l’autre au sein d’une seule requête simple.
Dans cet exercice, nous voulons comparer le nombre d’incidents de sécurité par jour pour les types d’incident 1 et 2 pendant le mois de juillet 2019, plus précisément la période allant du 2 juillet au 31 juillet.
Cet exercice fait partie du cours
<cours>Analyse de séries temporelles dans SQL Server</cours>Instructions de l’exercice
- Complétez la fonction de fenêtre pour renvoyer le nombre d’incidents du jour précédent, partitionné par identifiant de type d’incident et ordonné par date d’incident.
- Complétez la fonction de fenêtre pour renvoyer le nombre d’incidents du jour suivant, partitionné par identifiant de type d’incident et ordonné par date d’incident.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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;