開始使用免費開始

使用 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;
編輯並執行程式碼