Ответ
HAVING — это условие фильтрации, применяемое к агрегированным данным после GROUP BY. В отличие от WHERE, который фильтрует строки до агрегирования, HAVING работает с результатами агрегатных функций (SUM, AVG, COUNT и т.д.).
Пример:
SELECT department, AVG(salary) as avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 50000;
Здесь мы сначала группируем сотрудников по отделам, вычисляем среднюю зарплату, а затем оставляем только те отделы, где она превышает 50 000.
Ключевое отличие от WHERE:
WHEREфильтрует исходные данные до группировки.HAVINGфильтрует уже сгруппированные данные.
Используется только в связке с GROUP BY (хотя в некоторых СУБД, например MySQL, HAVING может работать и без него, но это нестандартное поведение).