Составной столбец – это коллекция столбцов, рассматриваемых как один блок в процессе вычисления группирований.

Столбцы задаются в скобках, как в следующей инструкции: ROLLUP (a, (b, c), d)
-
Составной столбец – это коллекция столбцов, рассматриваемых как один блок.
-
Используйте скобки в предложении
GROUP BYдля группирования столбцов, чтобы они рассматривались как один блок для операцийROLLUPилиCUBE. -
При использовании с операторами
ROLLUPилиCUBEсоставные столбцы требуют пропуска агрегирования для определенных уровней.
Здесь выражение (b, c) образует составной столбец и рассматривается как один блок. В общем случае составные столбцы полезны в операторах ROLLUP, CUBE и GROUPING SETS. Например, в ROLLUP или CUBE составные столбцы потребовали бы пропуска агрегирования для определеных уровней.
То есть предложение GROUP BY ROLLUP(a, (b, c) ) эквивалентно:
GROUP BY a, b, c UNION ALL GROUP BY a UNION ALL
|
Здесь (b, c) рассматривается как единый блок, а ROLLUP не применяется к (b, c). Это похоже на использование псевдонима – например, z как псевдонима для (b, c), а выражение GROUP BY при этом сводится к: GROUP BY ROLLUP(a, z).
Примечание. GROUP BY( ) обычно является инструкцией SELECT со значениями NULL для столбцов a и b и является только функцией агрегирования. Эта предложение обычно используется для генерации общих итогов.
SELECT NULL, NULL, aggregate_col |
Сравните с обычным использованием ROLLUP, например:
Это можно было бы представить как:
GROUP BY a, b, c UNION ALL GROUP BY a, b UNION ALL GROUP BY a UNION ALL
|
Аналогично:
Это было бы эквивалентно:
GROUP BY a, b, c UNION ALL GROUP BY a, b UNION ALL GROUP BY c UNION ALL
|
В следующей таблице приведена спецификация GROUPING SETS и эквивалентная спецификация GROUP BY.

Далее: Обзор использования подзапросов