Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Vul het GROUP BY-gedeelte in met GROUPING 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;
Code bewerken en uitvoeren