Sobes.tech
Back to questions
Junior — Middle
52

Какое различие существует между оператором WHERE и оператором HAVING в SQL-запросах?

Answer from AI

sobes.tech AI

Операторы WHERE и HAVING в SQL используются для фильтрации данных, но применяются на разных этапах обработки запроса:

  • WHERE фильтрует строки до группировки. Он применяется к исходным данным и ограничивает набор строк, которые попадут в дальнейшую обработку.

  • HAVING фильтрует группы после применения агрегатных функций и группировки (GROUP BY). Используется для ограничения групп по условиям, основанным на агрегатах.

Пример:

SELECT department, COUNT(*) as employee_count
FROM employees
WHERE salary > 50000  -- фильтруем сотрудников с зарплатой выше 50000
GROUP BY department
HAVING COUNT(*) > 10     -- выбираем отделы с более чем 10 сотрудниками

Здесь сначала выбираются сотрудники с зарплатой выше 50000 (WHERE), затем данные группируются по отделам, и среди этих групп выбираются только те, где количество сотрудников больше 10 (HAVING).