ComeçarComece de graça

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

Ver curso

Instruções do exercício

  • 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)

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;
Editar e executar o código