ÎncepețiÎncepe gratuit

Generează un sumar cu ROLLUP

Operatorul ROLLUP funcționează cel mai bine atunci când atributele non-măsură sunt ierarhice. Altfel, poți ajunge la niveluri de agregare ciudate, care nu au sens intuitiv.

În acest scenariu, vrem să agregăm numărul total de incidente de securitate din tabelul IncidentRollup. Managementul dorește să vadă datele agregate după combinația dintre an calendaristic, trimestru calendaristic și lună calendaristică. În plus, ar dori și linii de agregare separate pentru an calendaristic plus trimestru calendaristic, precum și linii separate pentru fiecare an calendaristic. În final, ar dori o linie suplimentară pentru totalul general. Putem face toate acestea într-o singură operațiune.

Acest exercițiu face parte din cursul

Analiza seriilor de timp în SQL Server

Vezi cursul

Instrucțiuni pentru exercițiu

  • Completează definiția pentru NumberOfIncidents adunând numărul de incidente din fiecare interval.
  • Completează segmentul GROUP BY, incluzând operatorul WITH ROLLUP.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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;
Editează și rulează codul