使用 ROLLUP 產生摘要
當非量測屬性具有階層結構時,ROLLUP 運算子效果最好。否則,你可能會得到一些不直覺的彙總層級。
在這個情境中,我們希望彙總 IncidentRollup 資料表中的安全事件總數。管理階層想看到依行事曆年份、行事曆季度與行事曆月份組合彙總的資料。此外,他們也想分別看到「行事曆年份 + 行事曆季度」的彙總列,以及每個行事曆年份各自的彙總列。最後,他們還希望有一列總計。我們可以在一次作業中完成這些需求。
本練習屬於課程
SQL Server 的時間序列分析
練習說明
- 完成
NumberOfIncidents的定義,將每個區間內的事件數量加總。 - 填寫
GROUP BY區段,並包含WITH ROLLUP運算子。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
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;