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
Instructions de l’exercice
- Complétez la définition de
NumberOfIncidentsen additionnant le nombre d'incidents sur chaque plage. - Remplissez la section
GROUP BY, en incluant l'opérateurWITH 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;