Назад к вопросам
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;