В этом учебном пособии вы узнаете, как использовать PostgreSQL оператор HAVING с синтаксисом и примерами.
Описание
PostgreSQL оператор HAVING используется в сочетании с оператором GROUP BY, чтобы ограничить группы возвращаемых строк только теми, чье условие TRUE.
Синтаксис
Синтаксис для оператора HAVING в PostgreSQL:
aggregate_function (expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2,... expression_n
HAVING condition;
Параметры или аргументы
- aggregate_function
- Это может быть агрегатная функция, например sum, count, min, max или avg.
- expression1, expression2,... expression_n
- Выражения, которые не заключены в агрегатную функцию и должны быть включены в операторе GROUP BY.
- WHERE conditions
- Необязательный. Это условия для выбора записей.
- HAVING condition
- Это еще одно условие, применяемое только к агрегированным результатам, чтобы ограничить группы возвращаемых строк. Только те группы, чье условие оценивается как TRUE, будут включены в набор результатов.
Пример - использование функции sum
Рассмотрим пример HAVING, в котором используется функция sum.
Вы также можете использовать функцию sum для возврата department (отдела) и sum(salary) (общей заработной платы для этого отдела). PostgreSQL оператор HAVING отфильтрует результаты так, что будут возвращены только отделы с общей зарплатой, превышающей 25000 долларов США.
1 2 3 4 |
SELECT department, sum(salary) AS "Salaries for department" FROM employees GROUP BY department HAVING sum(salary) > 25000; |
Пример - использование функции count
Давайте посмотрим, как использовать оператор HAVING с функцией count.
Вы можете использовать функцию count, чтобы вернуть отдел и количество сотрудников (для этого отдела), которые имеют статус «Активный». PostgreSQL оператор HAVING отфильтрует результаты так, что будут возвращены только те отделы, в которых занято не более 35 сотрудников.
1 2 3 4 5 |
SELECT department, count(*) AS "Number of employees" FROM employees WHERE status = 'Active' GROUP BY department HAVING count(*) <= 35; |
Пример - использование функции min
Давайте теперь посмотрим, как использовать оператор HAVING с функцией min.
Вы также можете использовать функцию min, чтобы вернуть название каждого отдела и минимальную зарплату в этом отделе. PostgreSQL оператор HAVING возвращает только те отделы, где минимальная зарплата составляет менее 36000 долларов США.
1 2 3 4 |
SELECT department, min(salary) AS "Lowest salary" FROM employees GROUP BY department HAVING min(salary) < 36000; |
Пример - использование функции max
Наконец, рассмотрим как использовать оператор HAVING с функцией max.
Например, вы также можете использовать функцию max, чтобы вернуть название каждого отдела и максимальную зарплату в отделе. PostgreSQL оператор HAVING будет возвращать только те отделы, чья максимальная зарплата больше или равна 31950 долларов США.
1 2 3 4 |
SELECT department, max(salary) AS "Highest salary" FROM employees GROUP BY department HAVING max(salary) >= 31950; |