Для чего в 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
Для чего в 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