SQL вопросы : Вопрос 1 : 37

Для чего в SQL необходимы такие выражения как: ROLLUP, CUBE и GROUPING SETS ?

 

Уважаемые учащиеся ниже Вы сможете увидеть ответ, перед тем, как ответить, пожалуйста, постарайтесь написать для себя ответ на черновике, и только потом сравните наш ответ с Вашим: 

 

 

 

 

Верно ли наше решение?

Ответ:

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), …;

Ссылка на более подробное описание в MSDN: http://msdn.microsoft.com/en-us/library/ms177673.aspx
Ссылка на примеры использования различных вариантов GROUP BY: http://itsuite.it.brighton.ac.uk/suite/docs/db2sqlref/frame3.htm#db2s0279 и http://programming4.us/database/3914.aspx
1 балл


© Copyright © 2017 - 2019 Все права защищены. Бесплатное онлайн образование.