ROLLUP, CUBE и GROUPING SETS

Tsql теория > ROLLUP, CUBE и GROUPING SETS
31.05.2018 14:00:01



Статья:

ROLLUP, CUBE и GROUPING SETS - выражения, на основании которых выполняется операция группирования (GROUP BY). 

ROLLUP - формирует статистические строки простого предложения GROUP BY и строки подытогов, а также строки общего итога. 

Пример:
SELECT a, b, c, SUM (выражение)
FROM T
GROUP BY ROLLUP (a,b,c);
Формируется одна строка с подытогом для сочетания значений (a, b, c), (a, b) и (a) плюс вычисляется также строка общего итога. Столбцы свертываются справа налево, последовательность расположения столбцов влияет на выходное группирование.

CUBE - формирует статистические строки простого предложения GROUP BY , строки со статистическими вычислениями высокого уровня конструкции ROLLUP и строки с результатами перекрестных вычислений. 

Пример:
SELECT a, b, c, SUM (выражение)
FROM T
GROUP BY CUBE (a,b,c);
Формируется одна строка для каждого уникального сочетания значений (a, b, c), (a, b), (a, c), (b, c), (a), (b) и (c) с подытогом для каждой строки и строкой общего итога. Выходные данные не зависят от порядка столбцов.

GROUPING SETS – указывает от одной до нескольких группирований данных (в круглых скобках, разделенных запятыми) в одном запросе. Выполняется статистическая обработка только указанных групп, а не полного набора статистических данных, формируемых с помощью конструкций CUBE или ROLLUP. Результаты эквивалентны тем, что формируются с применением конструкции UNION ALL к указанным группам. 

Пример:
SELECT a, b, c, SUM (выражение)
FROM T
GROUP BY GROUPING SETS (a,b), (b,c), …;