EmpezarEmpieza gratis

Genera agrupaciones personalizadas con GROUPING SETS

El operador GROUPING SETS nos permite definir los niveles de agregación específicos que queremos.

En este caso, la dirección quiere ver algo parecido a un ROLLUP, pero con menos información. En lugar de mostrar todos los niveles de agregación de la jerarquía, quieren ver tres niveles: totales generales; por año; y por año, trimestre y mes.

Este ejercicio forma parte del curso

Análisis de series temporales en SQL Server

Ver curso

Instrucciones del ejercicio

  • Completa la sección GROUP BY usando GROUPING SETS. Queremos ver:
  • Una fila por cada combinación de año, trimestre y mes (en ese orden jerárquico)
  • Una fila por cada año
  • Una fila con los totales generales (es decir, un grupo en blanco)

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

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 y ejecutar código