Totaux cumulés avec SUM()
L’un des usages les plus puissants des fonctions fenêtre est le calcul des totaux cumulés : un comptage qui progresse au fil du temps pour une valeur donnée. Ici, nous voulons utiliser une fonction fenêtre pour calculer combien d’incidents se sont produits à chaque date et pour chaque type d’incident en juillet 2019, ainsi qu’un cumul du nombre total d’incidents par type d’incident. Une fonction fenêtre nous permettra de résoudre ce problème en une seule requête.
Cet exercice fait partie du cours
<cours>Analyse de séries temporelles dans SQL Server</cours>Instructions de l’exercice
- Complétez avec la fonction fenêtre appropriée.
- Ajoutez la clause
PARTITION BYdans la fonction fenêtre, en partitionnant par l’identifiant du type d’incident. - Ajoutez la clause
ORDER BYdans la fonction fenêtre, en ordonnant par la date d’incident (dans son ordre par défaut, croissant).
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
SELECT
ir.IncidentDate,
ir.IncidentTypeID,
ir.NumberOfIncidents,
-- Get the total number of incidents
___(ir.NumberOfIncidents) OVER (
-- Do this for each incident type ID
PARTITION BY ir.___
-- Sort by the incident date
ORDER BY ir.___
) AS NumberOfIncidents
FROM dbo.IncidentRollup ir
INNER JOIN dbo.Calendar c
ON ir.IncidentDate = c.Date
WHERE
c.CalendarYear = 2019
AND c.CalendarMonth = 7
AND ir.IncidentTypeID IN (1, 2)
ORDER BY
ir.IncidentTypeID,
ir.IncidentDate;