Comece agoraComece grátis

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

Ver curso

Instruções do exercicio

  • Complete o trecho GROUP BY usando GROUPING 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;
Editar e Executar Código