Junior
Каква е разликата между командите WHERE и HAVING в SQL?
sobes.tech AI
Отговор от AI
WHERE се прилага пред групирането и филтрира редовете от резултата FROM. HAVING се прилага след групирането и филтрира групите, формирани с GROUP BY.
Пример:
Да предположим, че имаме таблица orders с колони customer_id, order_date и amount.
Намерете всички клиенти, чиято обща сума на поръчките надвишава 1000:
SELECT customer_id, SUM(amount)
FROM orders
GROUP BY customer_id
HAVING SUM(amount) > 1000;
Намерете всички поръчки с сума над 1000:
SELECT customer_id, order_date, amount
FROM orders
WHERE amount > 1000;
Таблица за сравнение:
| Характеристика | WHERE | HAVING |
|---|---|---|
| Приложение | За отделните редове преди групирането | За групите редове след групирането |
| Използва | Колони от FROM |
Агрегатни функции и колони от GROUP BY |
| Изпълнява се | Преди GROUP BY |
След GROUP BY |
| Агрегатни функции | Не може да се използва директно | Може да се използва |