Aangepaste groeperingen maken met GROUPING SETS
Met de operator GROUPING SETS kun je precies de aggregatieniveaus definiëren die je wilt.
In dit scenario wil het management iets vergelijkbaars met een ROLLUP, maar met minder details. In plaats van elk aggregatieniveau in de hiërarchie te tonen, wil men drie niveaus zien: totaaltellingen; per jaar; en per jaar, kwartaal en maand.
Deze oefening maakt deel uit van de cursus
Tijdreeksanalyse in SQL Server
Oefeninstructies
- Vul het
GROUP BY-gedeelte in metGROUPING SETS. We willen zien: - Eén rij voor elke combinatie van jaar, kwartaal en maand (in die hiërarchische volgorde)
- Eén rij voor elk jaar
- Eén rij met totaaltellingen (oftewel een lege groep)
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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;