Skapa anpassade grupperingar med GROUPING SETS
Operatorn GROUPING SETS låter dig definiera exakt vilka aggregeringsnivåer du vill ha.
I det här scenariot vill ledningen se något som liknar en ROLLUP, men utan lika mycket information. I stället för att visa varje nivå i hierarkin vill ledningen se tre nivåer: totalsummor; per år; samt per år, kvartal och månad.
Den här övningen är en del av kursen
Tidsserieanalys i SQL Server
Övningsinstruktioner
- Fyll i
GROUP BY-segmentet med hjälp avGROUPING SETS. Vi vill se: - En rad för varje kombination av år, kvartal och månad (i den hierarkiska ordningen)
- En rad för varje år
- En rad med totalsummor (det vill säga en tom grupp)
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,
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;