Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

ROLLUP строит агрегаты-подытоги (subtotal aggregates) на каждом запрошенном уровне, включая окончательные итоги (grand total) - по сути, с помощью этого расширения осуществляется группировка по комбинациям столбцов (иерархии), то есть сначала по n столбцам, потом по n-1, ..., постое пустое множество и «делает union». (Пример: свертка нарастающим итогом). Все столбцы в rollup должны быть выбраны в запросе, но можно использовать не все выбранные столбцы:
select ... group by список_столбцов, rollup (список_столбцов)
Короткий запрос и эффективное выполнение (группировка по n-1 столбцам использует результаты группировки по n столбцам и т.д.)
Пример
Как правило агрегатом является сумма, но это может быть и любой другой: AVG, COUNT, MIN, MAX и др. Запрещено использование агрегатов более низких уровней. Список столбцов может содержать до 255 столбцов.

Пример:

Блок кода
sql
sql
-- rollup
select
	mnSELECT Time, pnRegion, pl1Department, pl2, sum(fn)
from
	f
	inner join c on f.ci = c.ci
	inner join p on f.pi = p.pi
	inner join m on f.mi = m.mi
group by
	rollup(mn, pl2, pl1, pn)
order by
	mn, pl2, pl1, pn;SUM(Profit)
FROM Sales
GROUP BY ROLLUP (Region, Department)