CommencerCommencez gratuitement

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>
Voir le cours

Instructions de l’exercice

  • Complétez avec la fonction fenêtre appropriée.
  • Ajoutez la clause PARTITION BY dans la fonction fenêtre, en partitionnant par l’identifiant du type d’incident.
  • Ajoutez la clause ORDER BY dans 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;
Modifier et exécuter le code