Эквиваленты GROUPING SETS
Предложение GROUP BY с оператором GROUPING SETS может дать такой же результирующий набор, как и несколько простых предложений GROUP BY, объединенных с помощью UNION ALL. Оператор GROUPING SETS может дать результат, эквивалентный результату простой операции GROUP BY, операции ROLLUP или CUBE. Разные сочетания операций GROUPING SETS, ROLLUP или CUBE могут создавать эквивалентные результирующие наборы.
В этом разделе даны примеры эквивалентов оператора GROUPING SETS. В примерах используются следующие сокращения:
Agg(): любая статистическая функция;
(arg): аргумент.
Оператор GROUPING SETS, эквивалентный оператору UNION ALL
Предложение GROUPING SETS (<набор группирования> [,...n ]) в качестве списка GROUP BY — это то же самое, что оператор UNION ALL, объединяющий запросы, каждый из которых имеет в качестве списка GROUP BY один из наборов группирования. Статистические выражения для чисел с плавающей запятой могут возвращать немного другие результаты.
Следующие инструкции эквивалентны.
|
|
Операторы GROUPING SETS, эквивалентные простому предложению GROUP BY
Следующие предложения возвращают одни и те итоговые суммы:
|
|
Следующие предложения возвращают одни и те же одиночные наборы:
|
|
Операторы ROLLUP, эквивалентные оператору GROUPING SETS
Предложение GROUP BY ROLLUP (<составной список элементов>) с n измерениями во входном списке эквивалентно оператору GROUPING SETS со всеми префиксами его входного списка (n+1), заданными в качестве наборов группирования.
Следующие предложения эквивалентны.
|
|
Операторы CUBE, эквивалентные оператору GROUPING SETS
Предложение GROUP BY CUBE (<составной список элементов>) с n измерениями во входном списке эквивалентно оператору GROUPING SETS, у которого в качестве наборов группирования заданы все сочетания измерений из входного списка CUBE (2n комбинаций).
Следующие предложения эквивалентны.
|
|
Следующие предложения эквивалентны.
|
|
Составные столбцы в операторе ROLLUP, включая набор группирования внутри ROLLUP
Следующие предложения эквивалентны.
|
|
|
Составные столбцы в операторе CUBE, включая набор группирования внутри CUBE
Следующие предложения эквивалентны.
|
|
|
Предложение GROUP BY с оператором GROUPING SETS, ROLLUP или CUBE
Следующие предложения эквивалентны.
|
|
Следующие предложения эквивалентны.
|
|
Следующие предложения эквивалентны.
|
|
Оператор ROLLUP, включенный в список GROUPING SETS
Следующие предложения эквивалентны.
|
|
Оператор ROLLUP, включенный в набор группирования
Следующие предложения эквивалентны.
|
|