WHERE vs HAVING: в чем разница?

🎣 Этот вопрос – классика на собеседованиях по SQL.  Готовы освежить знания и блеснуть экспертизой? 😉

Оба оператора фильтруют данные, но делают это на РАЗНЫХ этапах выполнения запроса.

📌 WHERE работает с отдельными строками ДО группировки.

Представьте таблицу с заказами. WHERE поможет найти заказы, сделанные в определенную дату или с суммой выше заданного порога.

📌 HAVING фильтрует группы строк ПОСЛЕ группировки.

HAVING используется с агрегатными функциями (SUM, AVG, COUNT). Он отбирает группы, удовлетворяющие заданному условию. Например, найти товары, общая сумма продаж которых превышает 10000 рублей.

🚀 Пример:

Вывести категории товаров, средняя цена которых выше 500 рублей.

SELECT category, AVG(price) AS avg_price FROM products GROUP BY category HAVING avg_price > 500;

💡  WHERE здесь не подойдет, так как  avg_price  рассчитывается  после группировки.

Подготовились к вопросу?  😉  Делитесь своими примерами использования WHERE и HAVING в комментариях!  #sql