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

Створення власних групувань за допомогою GROUPING SETS

Оператор GROUPING SETS дає змогу визначати саме ті рівні агрегації, які нам потрібні.

У цій ситуації керівництво хоче бачити щось подібне до ROLLUP, але з меншим обсягом інформації. Замість показу кожного рівня агрегації в ієрархії, потрібно три рівні: підсумки загалом; за роками; і за роками, кварталами та місяцями.

Ця вправа є частиною курсу

Аналіз часових рядів у SQL Server

Переглянути курс

Інструкції до вправи

  • Заповніть секцію GROUP BY, використовуючи GROUPING SETS. Необхідно отримати:
  • Один рядок для кожної комбінації року, кварталу та місяця (у такому ієрархічному порядку)
  • Один рядок для кожного року
  • Один рядок із підсумками загалом (тобто порожню групу)

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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;
Редагувати та запускати код