Easywherehaving

Чем WHERE от HAVING отличается?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

WHERE фильтрует строки до группировки и не может использовать агрегаты. HAVING фильтрует группы после GROUP BY и работает с агрегатами.

SELECT department, COUNT(*) AS cnt
FROM employees
WHERE salary > 50000        -- фильтр по строкам
GROUP BY department
HAVING COUNT(*) > 5;        -- фильтр по группам

Логический порядок SQL: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT. Всё, что можно перенести в WHERE, переносим туда — это отсекает строки раньше и эффективнее.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.