Sobes.tech
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
Агрегатни функции Не може да се използва директно Може да се използва