Группировка по больше чем Одному столбцу
Иногда, Вы должны увидеть результаты для групп внутри групп.

Рисунок показывает отчет, который выводит на экран полную зарплату, которая платится для каждой работы в каждом отделе.
Таблица EMPLOYEES
группируется сначала по номеру отдела, а затем по названию работы в пределах этой группировки. Например, четыре клерка в отделе 50 группируются вместе, и единственный результат (полная зарплата) вычисляется для всех клерков в группе.
Следующий оператор SELECT
возвращает результат, показанный на рисунке:
SELECT department_id, job_id, sum(salary) |
Использование Предложения GROUP BY для Нескольких Столбцов

Можно возвратить сводные результаты для групп и подгрупп, перечисляя несколько столбцов в GROUP BY. Предложение GROUP BY
группирует строки, но не гарантирует порядка в наборе результатов. Чтобы упорядочить группировки, используйте предложение ORDER BY
.
В примере на рисунке, оператор SELECT
, который содержит предложение GROUP BY
, обрабатывается следующим образом:
Предложение
SELECT
определяет столбец, который будет получен:ID
отдела в таблицеEMPLOYEES
ID
работы в таблицеEMPLOYEES
Сумма всех зарплат в группе, которую Вы определили в предложении
GROUP BY
Предложение
FROM
определяет таблицы, к которым должна обратиться база данных: таблицаEMPLOYEES
.Предложение
WHERE
сужает набор результатов до тех строк, гдеID
отдела больше чем 40.
Предложение
GROUP BY
определяет, как следует сгруппировать получающиеся строки:Во-первых, строки группируются по
ID
отдела.Во-вторых, строки группируются по
ID
работы в группах с одинаковымID
отдела.
Предложение
ORDER BY
сортирует результаты поID
отдела.
Отметьте: функция SUM
применяется к столбцу зарплаты для всех ID работы в наборе результатов для каждой группы с одним и тем же ID
отдела. Кроме того, отметьте что строка SA_REP
не возвращается. ID
отдела для этой строки равен NULL
и, поэтому, она не удовлетворяет условию WHERE
.