> В чем разница между WHERE и HAVING в SQL и зачем использовать HAVING после GROUP BY? (JavaScript)

Уровень: middle · Роль: frontend · Язык: JavaScript · Категория: Технические вопросы

Компании: ESoft

Стек: Node.js, JavaScript

> Пример ответа

Разница между WHERE и HAVING в SQL заключается в том, на каком этапе обработки данных применяется фильтрация. WHERE отфильтровывает строки до группировки (GROUP BY), а HAVING - после группировки, работая с агрегированными значениями (например, SUM, COUNT, AVG).

HAVING необходим, когда нужно наложить условие на результат агрегатной функции. Например, если вы хотите найти категории товаров, сумма продаж которых превышает 1000, вы не сможете использовать WHERE, так как SUM(sales) вычисляется только после группировки. В этом случае пишется:

SQL
SELECT category, SUM(sales) AS total_sales
FROM orders
WHERE status = 'completed' -- фильтр до группировки
GROUP BY category
HAVING SUM(sales) > 1000; -- фильтр после группировки

В контексте Node.js и JavaScript это знание полезно при работе с базами данных через ORM (например, Sequelize, TypeORM) или прямые SQL-запросы. Понимание разницы помогает писать эффективные запросы и избегать ошибок, когда нужно фильтровать агрегированные данные.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью