Встречается на 5% собеседований по Data Engineer

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

WHERE фильтрует строки перед группировкой, а HAVING — после. WHERE работает с отдельными записями, HAVING — с агрегированными результатами (GROUP BY).

Пример:

sql
-- WHERE фильтрует до группировки
SELECT department, AVG(salary) 
FROM employees
WHERE salary > 50000
GROUP BY department;

-- HAVING фильтрует после группировки
SELECT department, AVG(salary)
FROM employees
GROUP BY department
HAVING AVG(salary) > 50000;

text

Ключевые отличия:
1. Порядок выполнения: WHERE → GROUP BY → HAVING
2. HAVING может использовать агрегатные функции (COUNT, SUM, AVG)
3. WHERE обычно эффективнее, так как фильтрация происходит раньше

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

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

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