Результат инструкции SELECT
в данном примере CUBE может интерпретироваться следующим образом:
Пример оператора CUBE
-
суммарный оклад для каждой должности в подразделении (для подразделений, идентификатор которых меньше 60);
-
суммарный оклад для каждого подразделения, идентификатор которого меньше 60;
-
суммарный оклад для каждой должности независимо от подразделения;
-
суммарный оклад для тех подразделений, идентификатор которых меньше 60, независимо от названий должностей.
В этом примере 1 показывает общий итог, 2 показывает строки, подытоживаемые только по JOB_ID
, 3 показывает несколько строк, подытоживаемых по DEPARTMENT_ID
и JOB_ID
, а 4 показывает несколько строк, подытоживаемых только по DEPARTMENT_ID
.
Оператор CUBE
также выполнил операцию ROLLUP
, чтобы отобразить промежуточные итоги для подразделений, идентификатор которых меньше 60, и суммарный оклад для подразделений, идентификатор которых меньше 60, независимо от названий должностей. Далее оператор CUBE
выводит суммарный оклад для каждой должности независимо от подразделения.
Примечание. Аналогично оператору ROLLUP
, создание промежуточных итогов для n измерений (т.е. n столбцов в предложении GROUP BY
) без оператора CUBE
требует, чтобы 2n инструкций SELECT
должны быть связаны с помощью UNION ALL
. Следовательно, отчет с тремя измерениями потребует связать с помощью UNION ALL 23
= 8 инструкций SELECT
.
Далее: Отсечение ветвей