CommencerCommencez gratuitement

Calculer des moyennes mobiles

Plutôt que d’afficher un total cumulatif depuis le début jusqu’à aujourd’hui, la direction souhaite voir le nombre moyen d’incidents sur les 7 derniers jours — c’est‑à‑dire en partant d’il y a 6 jours jusqu’à la date du jour. Comme il s’agit d’une fenêtre définie qui évolue au fil de la requête, on parle de moyenne mobile.

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

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 la fonction de fenêtre appropriée pour calculer une moyenne mobile allant de 6 jours en arrière jusqu’à aujourd’hui (la ligne courante).
  • Complétez la fenêtre, y compris la clause ROWS, la borne précédente de la fenêtre et la borne suivante 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