Gerar agrupamentos personalizados com GROUPING SETS
O operador GROUPING SETS permite definir os níveis específicos de agregação que você deseja.
Neste cenário, a diretoria quer ver algo semelhante a um ROLLUP, mas com menos informações. Em vez de mostrar todos os níveis de agregação na hierarquia, eles querem ver três níveis: totais gerais; por ano; e por ano, trimestre e mês.
Este exercício faz parte do curso
Análise de Séries Temporais no SQL Server
Instruções do exercício
- Complete o trecho
GROUP BYusandoGROUPING SETS. Queremos ver: - Uma linha para cada combinação de ano, trimestre e mês (nessa ordem hierárquica)
- Uma linha para cada ano
- Uma linha com os totais gerais (ou seja, um grupo em branco)
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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;