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
Zeitreihenanalyse in SQL Server
Anleitung zur Übung
- Vervollständige den
GROUP BY-Teil mitGROUPING 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 Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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;