ROLLUP でサマリーを作成する
ROLLUP 演算子は、測定値以外の属性が階層構造になっている場合に最も効果を発揮します。そうでないと、直感的に理解しづらい不自然な集計レベルが生じることがあります。
このシナリオでは、IncidentRollup テーブルにあるセキュリティインシデントの総数を集計します。経営陣は、暦年・暦四半期・暦月の組み合わせで集計したデータを見たいと考えています。さらに、暦年+暦四半期ごとの集計行、および各暦年ごとの集計行も別々に表示したいとのことです。最後に、総合計の行を1つ追加します。これらはすべて、1回の操作で実現できます。
この演習はコースの一部です
SQL Serverで学ぶ時系列分析
演習の手順
- 各範囲のインシデント数を合計して、
NumberOfIncidentsの定義を完成させてください。 WITH ROLLUP演算子を含めて、GROUP BY句を記述してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
SELECT
c.CalendarYear,
c.CalendarQuarterName,
c.CalendarMonth,
-- Include the sum of incidents by day over each range
___(ir.___) AS NumberOfIncidents
FROM dbo.IncidentRollup ir
INNER JOIN dbo.Calendar c
ON ir.IncidentDate = c.Date
WHERE
ir.IncidentTypeID = 2
GROUP BY
-- GROUP BY needs to include all non-aggregated columns
c.___,
c.___,
c.___
-- Fill in your grouping operator
WITH ___
ORDER BY
c.CalendarYear,
c.CalendarQuarterName,
c.CalendarMonth;