Tworzenie niestandardowych grupowań za pomocą GROUPING SETS
Operator GROUPING SETS pozwala zdefiniować dokładnie te poziomy agregacji, które są potrzebne.
W tym scenariuszu kierownictwo chciałoby zobaczyć coś podobnego do ROLLUP, ale z mniejszą ilością szczegółów. Zamiast pokazywać każdy poziom agregacji w hierarchii, kierownictwo chce zobaczyć trzy poziomy: sumy całkowite, podział według roku oraz podział według roku, kwartału i miesiąca.
To ćwiczenie jest częścią kursu
Analiza szeregów czasowych w SQL Server
Instrukcje do ćwiczenia
- Uzupełnij sekcję
GROUP BY, używającGROUPING SETS. Chcemy uzyskać: - Jeden wiersz dla każdej kombinacji roku, kwartału i miesiąca (w tej kolejności hierarchicznej)
- Jeden wiersz dla każdego roku
- Jeden wiersz z sumami całkowitymi (czyli pustą grupą)
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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;