Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

  • Fyll i GROUP BY-segmentet med hjälp av GROUPING 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;
Redigera och kör kod