使用 GROUPING SETS 產生自訂分組
GROUPING SETS 運算子可讓我們明確定義想要的彙總層級。
在這個情境中,管理階層希望看到類似 ROLLUP 的結果,但不要包含那麼多資訊。不顯示階層中的每個彙總層級,而是只要三個層級:總計;依年份;以及依「年份、季、月份」。
本練習屬於課程
SQL Server 的時間序列分析
練習說明
- 使用
GROUPING SETS完成GROUP BY區段。我們要看到: - 依「年份、季、月份」的階層順序,每種組合各一列
- 每個年份各一列
- 一列整體總計(也就是空白的群組)
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
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;