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;