Sobes.tech
Junior

SQLде WHERE жана HAVING буйруктарынын айырмасы эмнеде?

sobes.tech AI

AIден жооп

WHERE саптар мурда топтоо жасабастан фильтрлейт. HAVING топтоо менен түзүлгөн топторду, андан кийин фильтрлейт.

WHERE:

  • Жеке саптарга колдонулат.
  • Агрегаттык функцияларды (COUNT, SUM, AVG, MIN, MAX) колдонууга болбойт.
  • GROUP BY, HAVING жана SELECT алдында ишке ашырылат.

HAVING:

  • Саптардын топторуна колдонулат.
  • Агрегаттык функцияларды колдонушу мүмкүн.
  • WHERE жана GROUP BYден кийин, бирок SELECT алдында ишке ашырылат.

Мисал:

WHERE менен Москва шаарындагы кардарларды табыңыз жана алардын жалпы буйрутма суммасы 1000ден ашканын көрсөтүңүз (HAVING).

SELECT customer_id, SUM(order_amount)  -- Кардар ID жана анын буйрутмаларынын суммасын тандоо
FROM orders  -- Буйрутмалар таблицасынан
WHERE city = 'Москва'  -- Саптарды фильтрлөө, Москвадан келген буйрутмалар гана калат
GROUP BY customer_id  -- Саптарды кардар ID боюнча топтоо
HAVING SUM(order_amount) > 1000;  -- Топторду фильтрлөө, суммасы 1000ден ашкандар гана калат