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

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

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

  1. WHERE фильтрует строки до группировки (GROUP BY). Применяется к отдельным записям.
sql
SELECT department, COUNT(*) 
FROM employees 
WHERE salary > 5000 
GROUP BY department;
  1. HAVING фильтрует после группировки. Работает с агрегированными данными (COUNT, SUM, AVG и т.д.).
sql
SELECT department, COUNT(*) 
FROM employees 
GROUP BY department 
HAVING COUNT(*) > 10;

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

  • WHERE не может использовать агрегатные функции
  • HAVING требует GROUP BY (кроме редких случаев)
  • WHERE выполняется раньше, поэтому обычно эффективнее

Оптимально сначала фильтровать через WHERE, затем через HAVING.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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