Когда выполняется HAVING в SQL?

Логически HAVING фильтрует группы после GROUP BY и вычисления агрегатов, тогда как WHERE отбирает исходные строки. Физический порядок выполнения оптимизатор может организовать иначе.

Короткий ответ

Что ответить на собеседовании

Логически HAVING фильтрует группы после GROUP BY и вычисления агрегатов, тогда как WHERE отбирает исходные строки. Физический порядок выполнения оптимизатор может организовать иначе.

Подробный разбор

Ответ с пояснениями

Логически HAVING фильтрует группы после GROUP BY и вычисления агрегатов, тогда как WHERE отбирает исходные строки. Физический порядок выполнения оптимизатор может организовать иначе.

Например, GROUP BY customer_id HAVING COUNT(*) > 2 оставляет клиентов с более чем двумя выбранными заказами. Условие по статусу заказа обычно помещают в WHERE до подсчёта. Без GROUP BY агрегатный запрос может рассматриваться как одна группа в поддерживающей это СУБД. Не выводите порядок вычисления выражений только из их позиции в написанном SQL.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее