WHERE і HAVING - це два ключових слова в SQL, які використовуються для фільтрації результатів запиту. WHERE використовується для фільтрації результатів за значеннями у стовпцях, а HAVING використовується для фільтрації результатів за значеннями у результуючих агрегованих стовпцях.
WHERE можна використовувати для фільтрації результатів за значеннями у будь-якому стовпці таблиці. Наприклад, наступний запит поверне всі записи з таблиці customers, у яких поле age більше 18:
SQL
SELECT *
FROM customers
WHERE age > 18;
HAVING можна використовувати для фільтрації результатів за значеннями у результуючих агрегованих стовпцях. Наприклад, наступний запит поверне всі записи з таблиці orders, у яких загальна сума замовлень перевищує 1000 доларів:
SQL
SELECT order_id, SUM(amount) AS total
FROM orders
GROUP BY order_id
HAVING total > 1000;
Різниця між WHERE і HAVING полягає в тому, що WHERE використовується для фільтрації результатів за значеннями у стовпцях до того, як будуть обчислені агреговані стовпці, а HAVING використовується для фільтрації результатів за значеннями у результуючих агрегованих стовпцях після того, як вони будуть обчислені.