Для чего нужен HAVING

«Для чего нужен HAVING» — вопрос из категории Базы данных и SQL, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Пример:

SELECT department, COUNT(*) as employee_count
FROM employees
GROUP BY department
HAVING COUNT(*) > 5;

Этот запрос вернет только отделы с более чем 5 сотрудниками. Без HAVING пришлось бы использовать подзапрос или временную таблицу.

Ключевые отличия от WHERE:

  1. WHERE фильтрует до группировки, HAVING - после
  2. HAVING может использовать агрегатные функции
  3. HAVING всегда идет после GROUP BY (если он есть)