CommencezCommencez gratuitement

Générer des groupements personnalisés avec GROUPING SETS

L'opérateur GROUPING SETS nous permet de définir précisément les niveaux d'agrégation dont nous avons besoin.

Dans ce scénario, la direction souhaite quelque chose de semblable à un ROLLUP, mais avec moins d'information. Plutôt que d'afficher tous les niveaux d'agrégation de la hiérarchie, elle veut en voir trois : les totaux généraux, par année, et par année, trimestre et mois.

Cette activité fait partie du cours

Analyse de séries chronologiques dans SQL Server

Voir le cours

Instructions de l’exercice

  • Complétez la section GROUP BY en utilisant GROUPING SETS. Nous voulons voir :
  • Une ligne pour chaque combinaison année, trimestre et mois (dans cet ordre hiérarchique)
  • Une ligne pour chaque année
  • Une ligne avec les totaux généraux (c'est-à-dire un groupe vide)

Exercice interactif pratique

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

SELECT
	c.CalendarYear,
	c.CalendarQuarterName,
	c.CalendarMonth,
	SUM(ir.NumberOfIncidents) AS NumberOfIncidents
FROM dbo.IncidentRollup ir
	INNER JOIN dbo.Calendar c
		ON ir.IncidentDate = c.Date
WHERE
	ir.IncidentTypeID = 2
-- Fill in your grouping operator here
GROUP BY ___ ___
(
  	-- Group in hierarchical order:  calendar year,
    -- calendar quarter name, calendar month
	(___, ___, ___),
  	-- Group by calendar year
	(___),
    -- This remains blank; it gives us the grand total
	()
)
ORDER BY
	c.CalendarYear,
	c.CalendarQuarterName,
	c.CalendarMonth;
Modifier et exécuter le code