始める無料で始める

GROUPING SETS でカスタム集計を作成する

GROUPING SETS 演算子を使うと、必要な集計レベルを自由に指定できます。

このシナリオでは、マネジメントは ROLLUP に近い結果を見たいのですが、情報量は少なめで構いません。階層内のすべての集計レベルを表示する代わりに、3つのレベルだけを表示したいとのことです。すなわち、総計、年別、そして 年・四半期・月 別です。

この演習はコースの一部です

SQL Serverで学ぶ時系列分析

コースを見る

演習の手順

  • GROUPING SETS を使って GROUP BY 句を完成させてください。次を表示したいです。
  • 年・四半期・月(この階層順)ごとの各組み合わせにつき1行
  • 年ごとに1行
  • 総計(空のグループ)で1行

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

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;
コードを編集して実行