Назад к вопросам
Junior
101
questionbank
В чем разница между оператором WHERE и оператором HAVING в SQL?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Оператор WHERE используется для фильтрации строк перед их группировкой. Оператор HAVING используется для фильтрации групп после того, как они были созданы оператором GROUP BY.
Основные различия:
| Признак | WHERE | HAVING |
|---|---|---|
| Назначение | Фильтрация строк до группировки | Фильтрация групп после группировки |
| Применение | Применяется к отдельным строкам | Применяется к агрегированным данным групп |
| Исполнение | Выполняется до GROUP BY |
Выполняется после GROUP BY |
| Столбцы | Использует столбцы таблицы | Использует столбцы таблицы и агрегатные функции |
Пример с WHERE:
-- Выбираем имена пользователей, чей возраст больше 18
SELECT name
FROM users
WHERE age > 18;
Пример с HAVING:
-- Выбираем отделы, где средняя зарплата сотрудников превышает 50000
SELECT department, AVG(salary)
FROM employees
GROUP BY department
HAVING AVG(salary) > 50000;
Пример с обоими операторами:
-- Выбираем отделы, где средняя зарплата сотрудников старше 30 лет превышает 60000
SELECT department, AVG(salary)
FROM employees
WHERE age > 30
GROUP BY department
HAVING AVG(salary) > 60000;