Составные столбцы

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

12-17-3632802

Столбцы задаются в скобках, как в следующей инструкции: 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

GROUP BY ()

Здесь (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
FROM
GROUP BY ( );

Сравните с обычным использованием ROLLUP, например:

Это можно было бы представить как:

     GROUP BY a, b, c UNION ALL GROUP BY a, b UNION ALL GROUP BY a UNION ALL

GROUP BY ()

Аналогично:

Это было бы эквивалентно:

     GROUP BY a, b, c UNION ALL GROUP BY a, b UNION ALL GROUP BY c UNION ALL

GROUP By ()

В следующей таблице приведена спецификация GROUPING SETS и эквивалентная спецификация GROUP BY.

12-18-7629998

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

Похожие записи