Maak een samenvatting met ROLLUP
De ROLLUP-operator werkt het best wanneer je niet-meetattribuutwaarden hiërarchisch zijn. Anders kun je uitkomen op vreemde aggregatieniveaus die niet intuïtief aanvoelen.
In dit scenario willen we het totale aantal beveiligingsincidenten in de tabel IncidentRollup aggregeren. Het management wil de gegevens zien geaggregeerd op de combinatie van kalenderjaar, kalenderkwartaal en kalendermaand. Daarnaast willen ze ook afzonderlijke aggregatieregels voor kalenderjaar plus kalenderkwartaal, en afzonderlijke aggregatieregels voor elk kalenderjaar. Tot slot willen ze nog één regel voor het totaaltotaal. Dit kunnen we allemaal in één bewerking doen.
Deze oefening maakt deel uit van de cursus
Tijdreeksanalyse in SQL Server
Oefeninstructies
- Maak de definitie voor
NumberOfIncidentsaf door het aantal incidenten over elk bereik op te tellen. - Vul het
GROUP BY-gedeelte in, inclusief deWITH ROLLUP-operator.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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;