Базы данных / SQL trainee
В чём разница WHERE и HAVING?
Ответ
WHERE фильтрует строки ДО группировки и не может ссылаться на агрегаты. HAVING фильтрует уже сгруппированные данные по агрегатам (COUNT, SUM, AVG), например: SELECT user_id, COUNT(*) FROM orders WHERE status='OK' GROUP BY user_id HAVING COUNT(*) > 5.
Разбор: Ключевое различие — порядок выполнения: WHERE отсекает строки до группировки и не может ссылаться на агрегаты, а HAVING фильтрует уже сгруппированные данные по результатам COUNT/SUM/AVG и т.п. Ловушка в дистракторах — перепутаны роли (WHERE для агрегатов), выдуман несуществующий выигрыш по скорости и приписаны HAVING возможности, которых у него нет.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.