Junior — Middle
Каква е разликата между операторите HAVING и WHERE в SQL и в кои случаи трябва да ги използваме?
sobes.tech AI
Отговор от AI
Операторът WHERE се използва за филтриране на редове преди групирането на данните. Той избира редовете, които ще участват в последващи операции, като например агрегатни функции.
Операторът HAVING се прилага за филтриране на вече групирани данни, т.е. след изпълнение на GROUP BY. Той позволява филтриране на групи по агрегатни условия.
Пример:
SELECT department, COUNT(*) AS employee_count
FROM employees
WHERE salary > 50000 -- филтриране на редове по заплата
GROUP BY department
HAVING COUNT(*) > 5 -- филтриране на групи по брой служители
Обобщение:
- WHERE филтрира отделни записи преди групиране.
- HAVING филтрира групите след групиране.
Използвайте WHERE за условия върху отделни полета, HAVING — за условия върху агрегатни функции.