Skapa en sammanfattning med ROLLUP
ROLLUP-operatorn fungerar bäst när dina icke-mätbara attribut är hierarkiska. Annars kan du få aggregeringsnivåer som inte ger något intuitivt meningsfullt resultat.
I det här scenariot vill vi aggregera det totala antalet säkerhetsincidenter i tabellen IncidentRollup. Ledningen vill se data aggregerade efter kombinationen av kalenderår, kvartal och månad. Dessutom vill de ha separata aggregeringsrader för kalenderår plus kvartal, samt separata rader för varje enskilt kalenderår. Slutligen vill de ha en rad med totalsumman. Allt detta kan vi göra i en enda operation.
Den här övningen är en del av kursen
Tidsserieanalys i SQL Server
Övningsinstruktioner
- Slutför definitionen för
NumberOfIncidentsgenom att summera antalet incidenter över varje intervall. - Fyll i
GROUP BY-segmentet och inkludera operatornWITH ROLLUP.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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;