В чем разница между 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
```