Встречается на собеседованиях • сегодня

В чем разница между HAVING и WHERE в SQL

Разница между WHERE и HAVING в SQL — фундаментальное понятие, связанное с этапами выполнения запроса.

Ключевые отличия:

1. Этап применения

WHERE фильтрует отдельные строки до группировки (до оператора GROUP BY).

HAVING фильтрует результаты агрегации (после группировки).

2. Контекст использования

WHERE работает с данными из таблиц (столбцами, не участвующими в агрегации).

HAVING работает с результатами агрегатных функций (SUM, COUNT, AVG и т.д.).

3. Синтаксический порядок

text
SELECT 
FROM 
WHERE       -- Фильтрация строк ДО группировки
GROUP BY 
HAVING      -- Фильтрация групп ПОСЛЕ группировки
ORDER BY

Пример с WHERE (фильтрация до группировки):

text
SELECT category, SUM(revenue) AS total
FROM sales
WHERE revenue > 100  -- Отбираем строки с revenue > 100 ДО группировки
GROUP BY category;

Пример с HAVING (фильтрация после группировки):

text
SELECT category, SUM(revenue) AS total
FROM sales
GROUP BY category
HAVING SUM(revenue) > 250;  -- Отбираем группы с суммой revenue > 250
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы