Створіть зведення за допомогою 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;