Составной столбец – это коллекция столбцов, рассматриваемых как один блок в процессе вычисления группирований.
Столбцы задаются в скобках, как в следующей инструкции: 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
.
Далее: Обзор использования подзапросов