LoslegenKostenlos starten

Eigene Gruppierungen mit GROUPING SETS erstellen

Der Operator GROUPING SETS ermöglicht es uns, genau die Aggregationsebenen festzulegen, die wir brauchen.

In diesem Szenario möchte das Management etwas Ähnliches wie einen ROLLUP, aber mit weniger Details. Statt jede Aggregationsebene in der Hierarchie zu zeigen, sollen drei Ebenen angezeigt werden: Gesamtsummen; nach Jahr; sowie nach Jahr, Quartal und Monat.

Diese Übung ist Teil des Kurses

<Kurs>Zeitreihenanalyse in SQL Server</Kurs>
Kurs ansehen

Übungsanweisungen

  • Vervollständige den GROUP BY-Teil mit GROUPING SETS. Wir wollen sehen:
  • Eine Zeile für jede Kombination aus Jahr, Quartal und Monat (in genau dieser hierarchischen Reihenfolge)
  • Eine Zeile für jedes Jahr
  • Eine Zeile mit Gesamtsummen (also eine leere Gruppe)

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

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;
Code bearbeiten und ausführen