Назад к вопросам
Middle
64
questionbank

В чем различия между операторами WHERE и HAVING в SQL?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

WHERE фильтрует строки перед группировкой (GROUP BY), а HAVING фильтрует группы после группировки. WHERE может использовать столбцы, отсутствующие в SELECT, HAVING обычно использует агрегатные функции или столбцы, присутствующие в GROUP BY.

Пример:

SELECT
    category,
    COUNT(*) as total_items
FROM
    products
WHERE
    price > 10 // Фильтруем товары до группировки по категориям
GROUP BY
    category
HAVING
    COUNT(*) > 5; // Фильтруем группы категорий с количеством товаров больше 5

Сравнение:

Оператор Назначение Применяется к Может использовать агрегатные функции Порядок выполнения относительно GROUP BY
WHERE Фильтрация строк Отдельные строки Нет До
HAVING Фильтрация групп Группы строк Да После