Недопустимые Запросы с Использованием Групповых Функций
Любой столбец или выражение в списке SELECT
, который не является агрегатной функцией, должен быть в предложении GROUP BY
:

Всякий раз, когда Вы используете смесь отдельных элементов (DEPARTMENT_ID
) и групповые функции (COUNT
) в том же самом операторе SELECT
, следует включать предложение GROUP BY
, которое будет указывать отдельные элементы (в этом случае, DEPARTMENT_ID
). Если предложение GROUP BY
отсутствует, появляется сообщение об ошибке “not a single-group group function” и звездочка (*
) указывает незаконный столбец. Можно исправить ошибку в первом примере на рисунке, добавляя предложение GROUP BY
:
SELECT department_id, count(last_name) |
Любой столбец или выражение в списке SELECT
, который не находится в агрегатной функции, должен быть включен в предложение GROUP BY
. Во втором примере на рисунке job_id не состоит в предложении GROUP BY и не используется групповой функцией, таким образом возникает ошибка “not a GROUP BY expression”. Можно исправить ошибку во втором примере рисунка, включая job_id в предложение GROUP BY
.
SELECT department_id, job_id, COUNT(last_name) |
Некорректные Запросы с Использованием Групповых Функций
Нельзя использовать предложение
WHERE
, чтобы ограничить группы.Вы используете предложение
HAVING
для ограничения групп.Нельзя использовать групповые функции в предложении
WHERE
.

Предложение WHERE
не может использоваться, чтобы ограничить группы. Оператор SELECT
в примере на рисунке приводит к ошибке, потому что он использует предложение WHERE
, чтобы ограничить вывод средних зарплат теми отделами, у которых средняя зарплата больше чем $8,000
.
Однако, можно исправить ошибку в примере при использовании предложения HAVING
, чтобы ограничить группы:
SELECT department_id, AVG(salary) |