ÎncepețiÎncepe gratuit

Generează grupări personalizate cu GROUPING SETS

Operatorul GROUPING SETS îți permite să definești exact nivelurile de agregare dorite.

În acest scenariu, managementul dorește ceva asemănător cu un ROLLUP, dar fără toate nivelurile de detaliu. În loc să afișeze fiecare nivel din ierarhie, managementul vrea să vadă trei niveluri: totaluri generale; pe an; și pe an, trimestru și lună.

Acest exercițiu face parte din cursul

Analiza seriilor de timp în SQL Server

Vezi cursul

Instrucțiuni pentru exercițiu

  • Completează segmentul GROUP BY folosind GROUPING SETS. Vrem să vedem:
  • Un rând pentru fiecare combinație de an, trimestru și lună (în această ordine ierarhică)
  • Un rând pentru fiecare an
  • Un rând cu totalurile generale (adică un grup gol)

Exercițiu interactiv practic

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

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