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

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

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

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

Пример:

sql
-- WHERE: фильтрация до группировки
SELECT Department, COUNT(*) 
FROM Employees 
WHERE Salary > 50000  -- фильтр отдельных записей
GROUP BY Department;

-- HAVING: фильтрация после группировки
SELECT Department, COUNT(*) as EmpCount 
FROM Employees 
GROUP BY Department
HAVING COUNT(*) > 10;  -- фильтр по агрегатной функции

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

  1. WHERE не может использовать агрегатные функции
  2. HAVING требует наличия GROUP BY (кроме случаев с агрегатами по всей таблице)
  3. Порядок выполнения: WHERE → GROUP BY → HAVING
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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