Используешь ли HAVING в SQL-запросах?

«Используешь ли HAVING в SQL-запросах?» — вопрос из категории Базы данных и SQL, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, я использую HAVING для фильтрации результатов агрегации после применения GROUP BY. Это ключевое отличие от WHERE, который фильтрует строки до группировки.

Пример запроса:

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

Этот запрос вернёт только те отделы, где средняя зарплата превышает 50 000.

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

  • HAVING работает с агрегированными функциями (COUNT, SUM, AVG, MIN, MAX).
  • WHERE не может ссылаться на результаты агрегации.
  • В одном запросе можно использовать и WHERE (для фильтрации строк), и HAVING (для фильтрации групп).
  • При тестировании или валидации данных HAVING полезен для проверки сводных отчётов и бизнес-правил, например, чтобы убедиться, что в отчёт попадают только группы, соответствующие определённым критериям.