开始使用免费开始使用

使用 GROUPING SETS 生成自定义分组

GROUPING SETS 运算符允许我们精确定义所需的聚合层级。

在本场景中,管理层希望看到类似于 ROLLUP 的结果,但信息不要那么多。与其展示层级中的每一个聚合层级,管理层只想看到 3 个层级:总计;按年份;以及按年份、季度、月份。

本练习是课程的一部分

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;
编辑并运行代码