Back to questions
Andersen
OZON
Junior — Middle
66
Объясните различия между использованием WHERE и HAVING в SQL-запросах и в каких случаях предпочтительнее применять каждый из них
Companies where asked
Answer from AI
sobes.tech AI
В SQL WHERE и HAVING используются для фильтрации данных, но применяются на разных этапах обработки запроса:
-
WHERE фильтрует строки до группировки. Он ограничивает набор данных, который будет агрегироваться или обрабатываться дальше.
-
HAVING фильтрует группы после применения агрегатных функций (например,
SUM,COUNT). Используется для условий на агрегированные данные.
Пример:
SELECT department, COUNT(*) as employee_count
FROM employees
WHERE salary > 50000 -- фильтрация сотрудников с зарплатой > 50000
GROUP BY department
HAVING COUNT(*) > 5; -- выбираем отделы с более чем 5 такими сотрудниками
Здесь WHERE сначала отбирает сотрудников с зарплатой выше 50000, затем GROUP BY группирует их по отделам, а HAVING оставляет только те отделы, где таких сотрудников больше 5.
Итого:
- Используйте
WHEREдля фильтрации отдельных строк до группировки. - Используйте
HAVINGдля фильтрации групп после агрегирования.