Sobes.tech
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;