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,HAVINGvaSELECTdan oldin bajariladi.
HAVING:
- Satir guruhlariga taalluqlidir.
- Aytish mumkin funksiyalarini ishlatishi mumkin.
WHEREvaGROUP BYdan keyin, lekinSELECTdan 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