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
Instructions de l’exercice
- Complétez la section
GROUP BYen utilisantGROUPING 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;