Пример CUBE

Результат инструкции SELECT в данном примере CUBE может интерпретироваться следующим образом:

12-10-2543156

Пример оператора 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.

Далее: Отсечение ветвей

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