Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Maak de definitie voor NumberOfIncidents af door het aantal incidenten over elk bereik op te tellen.
  • Vul het GROUP BY-gedeelte in, inclusief de WITH 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;
Code bewerken en uitvoeren