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 exercicio faz parte do curso
Análise de Séries Temporais no SQL Server
Instruções do exercicio
- 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)
exercicio interativo prático
Tente este exercicio 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;