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
Istruzioni dell'esercizio
- Compila la sezione
GROUP BYusandoGROUPING 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;