Когда использовать HAVING

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

Ответ

HAVING используется для фильтрации результатов агрегатных функций (COUNT, SUM, AVG и т.д.) после выполнения GROUP BY, в отличие от WHERE, который фильтрует строки перед группировкой.

Пример:

SELECT department, AVG(salary) as avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 50000;

Ключевые моменты:

  1. HAVING применяется после GROUP BY
  2. Может содержать агрегатные функции в условиях
  3. Медленнее WHERE, так как обрабатывает уже сгруппированные данные

Оптимально сначала фильтровать данные через WHERE, затем группировать и применять HAVING для финальной фильтрации.