CommencerCommencez gratuitement

Générer un récapitulatif avec ROLLUP

L’opérateur ROLLUP est particulièrement efficace lorsque vos attributs non mesurés sont hiérarchiques. Sinon, vous risquez d’obtenir des niveaux d’agrégation inhabituels qui ne sont pas intuitifs.

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

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 définition de NumberOfIncidents en additionnant le nombre d’incidents sur chaque plage.
  • Renseignez la clause 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