Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Uzupełnij sekcję GROUP BY, używając GROUPING 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;
Edytuj i uruchom kod