Запрос, показанный на рисунке, вычисляет агрегаты по двум группированиям.

Таблица делится на следующие группы:
идентификатор подразделения, идентификатор должности (department_id, job_id);
идентификатор должности, идентификатор менеджера (job_id, manager_id).
Для каждой из этих групп рассчитываются средние оклады. Набор результатов содержит средний оклад для каждой из двух этих групп.
В результатах группа, помеченная как 1, может интерпретироваться следующим образом:
Средний оклад всех сотрудников на должности
SH_CLERK
, подчиняющихся менеджеру 122, составляет 3200.Средний оклад всех сотрудников на должности
AC_MGR
, подчиняющихся менеджеру 101, составляет 12 000 и т. д.
Группа, помеченная как 2, интерпретируется следующим образом:
Средний оклад всех сотрудников на должности
AC_MGR
в подразделении 110 составляет 12 000.Средний оклад всех сотрудников на должности
AD_PRES
в подразделении 90 составляет 24 000 и т. д.
Приведенный на рисунке пример также может быть получен следующим образом:
SELECT department_id, job_id, NULL as manager_id, |
В отсутствие оптимизатора, который просматривает блоки запроса для создания плана выполнения, предыдущему запросу понадобилось бы два сканирования базовой таблицы EMPLOYEES
. Это может быть очень неэффективно. Следовательно, рекомендуется использовать инструкцию GROUPING SETS.