CommencezCommencez gratuitement

Générer un sommaire avec ROLLUP

L'opérateur ROLLUP fonctionne mieux lorsque vos attributs non mesurés sont hiérarchiques. Sinon, vous pourriez obtenir des niveaux d'agrégation étranges qui ne sont pas intuitifs.

Dans ce scénario, nous souhaitons agréger le nombre total d'incidents de sécurité dans la table IncidentRollup. La direction veut voir les données agrégées par combinaison d'année civile, de trimestre civil et de mois civil. Elle souhaite également voir des lignes d'agrégat distinctes pour l'année civile plus le trimestre civil, ainsi que des lignes d'agrégat distinctes pour chaque année civile. Enfin, elle veut une dernière ligne pour le total général. Nous pouvons tout faire en une seule opération.

Cette activité fait partie du cours

Analyse de séries chronologiques dans SQL Server

Voir le cours

Instructions de l’exercice

  • Complétez la définition de NumberOfIncidents en additionnant le nombre d'incidents sur chaque plage.
  • Remplissez la section GROUP BY, en incluant l'opérateur WITH ROLLUP.

Exercice interactif pratique

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

SELECT
	c.CalendarYear,
	c.CalendarQuarterName,
	c.CalendarMonth,
    -- Include the sum of incidents by day over each range
	___(ir.___) AS NumberOfIncidents
FROM dbo.IncidentRollup ir
	INNER JOIN dbo.Calendar c
		ON ir.IncidentDate = c.Date
WHERE
	ir.IncidentTypeID = 2
GROUP BY
	-- GROUP BY needs to include all non-aggregated columns
	c.___,
	c.___,
	c.___
-- Fill in your grouping operator
WITH ___
ORDER BY
	c.CalendarYear,
	c.CalendarQuarterName,
	c.CalendarMonth;
Modifier et exécuter le code