Что такое HAVING

«Что такое HAVING» — вопрос из категории SQL, который задают на 33% собеседований Аналитик Данных. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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 может работать и без него, но это нестандартное поведение).