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

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

HAVING и WHERE фильтруют данные, но работают на разных этапах запроса:

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

Пример:

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) > 70000;

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

  • WHERE нельзя использовать с агрегатными функциями, HAVING — можно.
  • WHERE работает быстрее, так как сокращает данные до группировки.

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

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

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