Что такое ключевое слово HAVING в SQL?

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

Ответ

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

Пример использования:

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

Этот запрос вернёт только те отделы (department), в которых количество сотрудников больше 5.

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

  1. Время применения: WHERE фильтрует отдельные записи перед группировкой, HAVING фильтрует уже сформированные группы.
  2. Использование агрегатных функций: В WHERE нельзя использовать агрегатные функции, а в HAVING — можно.
  3. Порядок в запросе: HAVING всегда указывается после GROUP BY (если он есть).

Практическое применение в тестировании: При проверке отчётов или сводных данных важно валидировать, что агрегированные значения (например, общие суммы, средние показатели, количество записей в группах) соответствуют бизнес-правилам. HAVING помогает написать запросы для поиска групп, нарушающих эти правила (например, "найти пользователей, совершивших менее 2 заказов", "выявить товарные категории со средней ценой выше X").