В этом учебном материале вы узнаете, как использовать SQL оператор HAVING с синтаксисом и примерами.
Описание
SQL оператор HAVING используется в сочетании с оператором GROUP BY, чтобы ограничить группы возвращаемых строк только теми, чьё условие TRUE.
Синтаксис
Синтаксис оператора HAVING в SQL:
aggregate_function (aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, ... expression_n
HAVING condition;
Параметры или аргументы
- expression1, expression2, ... expression_n
- Выражения, которые не заключены в агрегатную функцию должны быть включены в предложение GROUP BY в конце SQL оператора.
- aggregate_function
- Это агрегатная функция, такая как SUM, COUNT, MIN, MAX или AVG.
- aggregate_expression
- Это столбец или выражение, для которого будет использоваться aggregate_function.
- tables
- Таблицы, из которых вы хотите получить записи. В предложении FROM должна быть указана хотя бы одна таблица.
- WHERE conditions
- Необязательный. Это условия для выбора записей.
- HAVING condition
- Это еще одно условие, применяемое только к агрегированным результатам, чтобы ограничить группы возвращаемых строк. Только те группы, состояние которых оценивается как true, будут включены в набор результатов.
Пример - использование функции SUM
Давайте рассмотрим SQL пример HAVING, в котором используется SQL функция SUM.
Вы также можете использовать SQL функцию SUM для возврата названия department и total sales (общих продаж в связанном отделе). SQL-предложение HAVING отфильтрует результаты так, что будут возвращены только department с продажами более 1000 $.
1 2 3 4 |
SELECT department, SUM(sales) AS "Total sales" FROM order_details GROUP BY department HAVING SUM(sales) > 1000; |
Пример - использование функции COUNT
Давайте посмотрим, как мы можем использовать HAVING с SQL функцией COUNT.
Вы можете использовать SQL функцию COUNT, чтобы вернуть название department (отдела) и количество employees (сотрудников в соответствующем отделе), sales (продажи) которых составляют более 25000 $ в год. SQL-предложение HAVING будет фильтровать результаты, так что будут возвращены только отделы с более чем 10 сотрудниками.
1 2 3 4 5 6 |
SELECT department, COUNT(*) AS "Number of employees" FROM employees WHERE salary > 25000 GROUP BY department HAVING COUNT(*) > 10; |
Пример - использование функции MIN
Давайте теперь посмотрим, как мы могли бы использовать HAVING с SQL функцией MIN.
Вы также можете использовать SQL функцию MIN для возврата department (названия отдела) и MIN(salary) (минимальной зарплаты в отделе). SQL-предложение HAVING вернет только те department, где MIN(salary) превышает 55000 $.
1 2 3 4 |
SELECT department, MIN(salary) AS "Lowest salary" FROM employees GROUP BY department HAVING MIN(salary) > 55000; |
Пример - использование функции MAX
Наконец, рассмотрим, использование HAVING с функцией SQL MAX.
Например, вы можете использовать SQL функцию MAX, чтобы вернуть department и максимальную salary в отделе. SQL-предложение HAVING вернет только те department, чья максимальная salary составляет менее 35000 $.
1 2 3 4 5 |
SELECT department, MAX(salary) AS "Highest salary" FROM employees GROUP BY department HAVING MAX(salary) < 50000; |