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
Instrucciones del ejercicio
- Completa la sección
GROUP BYusandoGROUPING 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;