Inizia subitoInizia gratis

Genera raggruppamenti personalizzati con GROUPING SETS

L'operatore GROUPING SETS ti permette di definire gli specifici livelli di aggregazione che desideri.

In questo scenario, il management vorrebbe qualcosa di simile a un ROLLUP ma con meno informazioni. Invece di mostrare ogni livello di aggregazione nella gerarchia, il management vuole vedere tre livelli: totali generali; per anno; e per anno, trimestre e mese.

Questo esercizio fa parte del corso

Analisi delle serie temporali in SQL Server

Visualizza corso

Istruzioni dell'esercizio

  • Compila la sezione GROUP BY usando GROUPING SETS. Vogliamo vedere:
  • Una riga per ogni combinazione di anno, trimestre e mese (in quell'ordine gerarchico)
  • Una riga per ogni anno
  • Una riga con i totali generali (cioè, un gruppo vuoto)

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

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;
Modifica ed esegui il codice