Zacznij terazZacznij za darmo

Generowanie podsumowania z ROLLUP

Operator ROLLUP sprawdza się najlepiej, gdy atrybuty niebędące miarami tworzą hierarchię. W przeciwnym razie możesz otrzymać poziomy agregacji, które nie mają intuicyjnego sensu.

W tym scenariuszu chcemy zsumować łączną liczbę incydentów bezpieczeństwa z tabeli IncidentRollup. Kierownictwo chciałoby zobaczyć dane zagregowane według kombinacji roku kalendarzowego, kwartału i miesiąca. Ponadto oczekuje osobnych wierszy agregujących dla kombinacji roku i kwartału, a także osobnych wierszy dla każdego roku. Na koniec potrzebny jest jeszcze jeden wiersz z sumą całkowitą. Wszystko to można wykonać w ramach jednej operacji.

To ćwiczenie jest częścią kursu

Analiza szeregów czasowych w SQL Server

Zobacz kurs

Instrukcje do ćwiczenia

  • Uzupełnij definicję NumberOfIncidents, sumując liczbę incydentów w każdym przedziale.
  • Wypełnij segment GROUP BY, dodając operator WITH ROLLUP.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

SELECT
	c.CalendarYear,
	c.CalendarQuarterName,
	c.CalendarMonth,
    -- Include the sum of incidents by day over each range
	___(ir.___) AS NumberOfIncidents
FROM dbo.IncidentRollup ir
	INNER JOIN dbo.Calendar c
		ON ir.IncidentDate = c.Date
WHERE
	ir.IncidentTypeID = 2
GROUP BY
	-- GROUP BY needs to include all non-aggregated columns
	c.___,
	c.___,
	c.___
-- Fill in your grouping operator
WITH ___
ORDER BY
	c.CalendarYear,
	c.CalendarQuarterName,
	c.CalendarMonth;
Edytuj i uruchom kod