Sobes.tech
Junior

SQLda WHERE va HAVING iboralari o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

WHERE satrlar oldin guruhlashdan avval filtrlaydi. HAVING esa GROUP BY bilan yaratilgan guruhlarni, keyin filtrlaydi.

WHERE:

  • Yakuniy satrlarga taalluqlidir.
  • Aytish mumkin emas (COUNT, SUM, AVG, MIN, MAX) funksiyalarini ishlata olmaydi.
  • GROUP BY, HAVING va SELECTdan oldin bajariladi.

HAVING:

  • Satir guruhlariga taalluqlidir.
  • Aytish mumkin funksiyalarini ishlatishi mumkin.
  • WHERE va GROUP BYdan keyin, lekin SELECTdan oldin bajariladi.

Misol:

WHERE bilan Moskva shahridagi mijozlarni toping va ularning umumiy buyurtma summasi 1000 dan oshganlarini tanlang (HAVING).

SELECT customer_id, SUM(order_amount)  -- Mijoz ID va uning buyurtma summasini tanlang
FROM orders  -- Buyurtma jadvalidan
WHERE city = 'Moskva'  -- Satirlarni filtrlaydi, faqat Moskva buyurtmalari
GROUP BY customer_id  -- Satirlarni mijoz ID bo'yicha guruhlaydi
HAVING SUM(order_amount) > 1000;  -- Guruhlarni filtrlaydi, faqat buyurtma summasi 1000 dan oshganlar