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

Python Middle Без компании
В чем разница между HAVING и WHERE в SQL
Ответы
**Разница между** `WHERE` **и** `HAVING` **в SQL** — фундаментальное понятие, связанное с этапами выполнения запроса. **Ключевые отличия:** **1. Этап применения** `WHERE` фильтрует **отдельные строки** до группировки (до оператора `GROUP BY`). `HAVING` фильтрует **результаты агрегации** (после группировки). **2. Контекст использования** `WHERE` работает с данными из таблиц (столбцами, не участвующими в агрегации). `HAVING` работает с результатами агрегатных функций (`SUM`, `COUNT`, `AVG` и т.д.). **3. Синтаксический порядок** ``` SELECT FROM WHERE -- Фильтрация строк ДО группировки GROUP BY HAVING -- Фильтрация групп ПОСЛЕ группировки ORDER BY ``` ### *Пример с* `WHERE` *(фильтрация до группировки):* ``` SELECT category, SUM(revenue) AS total FROM sales WHERE revenue > 100 -- Отбираем строки с revenue > 100 ДО группировки GROUP BY category; ``` ### *Пример с* `HAVING` *(фильтрация после группировки):* ``` SELECT category, SUM(revenue) AS total FROM sales GROUP BY category HAVING SUM(revenue) > 250; -- Отбираем группы с суммой revenue > 250 ```