HAVING AVG(salary)>10000.
Предложение HAVING задает условие отбора групп для вывода. Следовательно, на группы накладывается дальнейшее ограничение, основанное на сводной информации.
Синтаксис:
SELECT {столбец, групповая_функция}
FROM Таблица
[ WHERE условие]
[ GROUP BY выражение_группирования]
[HAVING условие_группы]
[ ORDER BY {Столбец, выражение}[ ASC | DESC ]];
где HAVING - вывод конкретных групп.
Условие_группы - включает в выходной результат только те группы, для которых заданное условие истинно (TRUE).
Если используется предложение HAVING, сервер базы данных ORACLE выполняет следующие действия:
- Группирует строки.
- Применяет групповую функцию.
- Производит вывод групп, удовлетворяющих условию предложения HAVING.
Предложение HAVING может предшествовать предложению GROUP BY, но более логично ставить предложение GROUP BY первым. Образование групп и вычисление групповых функций происходят до того, как к группам из списка SELECT применяется ограничение, заданное в предложении HAVING.
Пример 5: Вывод должности и общей заработной платы для всех должностей с заработной платой более 20000 в месяц, кроме вице-президентов. Выходные строки сортируются по заработной плате.
|
|
SELECT dolzhn, SUM(salary) SUMMA
FROM EMP
WHERE dozhn NOT LIKE ‘VP%’
GROUP BY dolzhn
HAVING SUM(salary)>20000
ORDER BY SUM(salary);
Сервер Oracle рассматривает предложения в следующем порядке:
- Если команда содержит предложение WHERE сервер, прежде всего, отбирает строки в соответствии с этим предложением.
- Сервер выявляет группы, заданные предложением GROUP BY.
- Исключаются группы, не удовлетворяющие критерию предложения HAVING.
Предложение GROUP BY можно использовать без указания групповой функции в списке SELECT. Если отбор строк производится по результатам групповой функции, то использование как предложения GROUP BY, так и предложения HAVING обязательно
Тема 9: Подзапросы.
Подзапрос. Его назначение и синтаксис.
Однострочные и многострочные подзапросы.