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