ПочатиПочніть безкоштовно

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