Junior
174
questionbank
В чем разница между оператором WHERE и оператором HAVING в SQL?
AI答案
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;