CommencezCommencez gratuitement

Calculer des moyennes mobiles

Plutôt que de consulter un total cumulatif depuis le tout début jusqu'à aujourd'hui, la direction souhaite voir le nombre moyen d'incidents au cours des 7 derniers jours — c'est‑à‑dire en commençant 6 jours avant et en terminant à la date actuelle. Comme il s'agit d'une plage définie qui se déplace au fil de la requête, on parle ici de moyenne mobile.

SQL Server ne permet pas d'utiliser des intervalles de temps dans les fonctions de fenêtre, nous devrons donc supposer qu'il y a une ligne par jour et utiliser la clause ROWS.

Cette activité fait partie du cours

Analyse de séries chronologiques dans SQL Server

Voir le cours

Instructions de l’exercice

  • Indiquez la fonction de fenêtre appropriée pour calculer une moyenne mobile allant de 6 jours avant jusqu'à aujourd'hui (la ligne courante).
  • Complétez le cadrage de la fenêtre, incluant la clause ROWS, la borne « preceding » et la borne « following » de la fenêtre.

Exercice interactif pratique

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

SELECT
	ir.IncidentDate,
	ir.IncidentTypeID,
	ir.NumberOfIncidents,
    -- Fill in the correct window function
	___(ir.NumberOfIncidents) OVER (
		PARTITION BY ir.IncidentTypeID
		ORDER BY ir.IncidentDate
      	-- Fill in the three parts of the window frame
		___ BETWEEN ___ AND ___
	) AS MeanNumberOfIncidents
FROM dbo.IncidentRollup ir
	INNER JOIN dbo.Calendar c
		ON ir.IncidentDate = c.Date
WHERE
	c.CalendarYear = 2019
	AND c.CalendarMonth IN (7, 8)
	AND ir.IncidentTypeID = 1
ORDER BY
	ir.IncidentTypeID,
	ir.IncidentDate;
Modifier et exécuter le code