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