SQL HAVING Sharti
SQL tilida HAVING sharti GROUP BY buyrug‘i bilan birgalikda ishlatiladi va guruhlangan natijalarni filtrlash uchun mo‘ljallangan. HAVING sharti WHERE shartidan farq qilib, guruhlashdan keyin hosil bo‘lgan ma'lumotlarga filtr qo‘llaydi.
HAVING ning Asosiy Sintaksisi
ustun_nomi: Guruhlash uchun tanlangan ustun.
agregat_funksiyalar: Guruhlangan qiymatlar uchun hisob-kitob bajaradigan funksiyalar (COUNT, SUM, AVG, MAX, MIN).
HAVING: Guruhlashdan keyin natijalarni filtrlash uchun ishlatiladi.
HAVING va WHERE Sharti O‘rtasidagi Farqi
WHERE – guruhlashdan oldin yozuvlarni filtrlash uchun ishlatiladi.
HAVING – guruhlashdan keyin filtr qo‘llaydi.
Misol:
WHERE narxi 100 dan katta bo‘lgan yozuvlarni tanlaydi.
HAVING esa guruhlashdan so‘ng yig‘indisi 1000 dan katta bo‘lgan guruhlarni tanlaydi.
HAVING dan Foydalanish Agregat Funksiyalar bilan
HAVING sharti COUNT, SUM, AVG, MAX, MIN kabi agregat funksiyalar bilan ishlatiladi.
Misol Jadval
Faraz qilaylik, bizda quyidagi mahsulotlar
jadvali bor:
1
Kompyuter
Elektronika
1500
2
Printer
Elektronika
300
3
Stol
Mebel
200
4
Kursi
Mebel
150
5
Televizor
Elektronika
1000
6
Stol Lampasi
Mebel
50
1. COUNT va HAVING
Vazifa: Har bir kategoriya bo‘yicha mahsulotlar sonini hisoblash va faqat 2 ta yoki undan ko‘p mahsulot bo‘lgan kategoriyalarni tanlash.
SQL so‘rovi:
Natija:
Elektronika
3
Mebel
3
Izoh:
GROUP BY kategoriyalar bo‘yicha guruhlaydi.
HAVING COUNT(*) >= 2 sharti faqat 2 yoki undan ko‘p mahsulotga ega kategoriyalarni tanlaydi.
2. SUM va HAVING
Vazifa: Har bir kategoriya bo‘yicha mahsulotlar narxining yig‘indisini hisoblash va faqat 1500 dan katta yig‘indiga ega kategoriyalarni tanlash.
SQL so‘rovi:
Natija:
Elektronika
2800
Izoh:
SUM(narx) har bir kategoriya bo‘yicha mahsulotlarning umumiy narxini hisoblaydi.
HAVING SUM(narx) > 1500 faqat 1500 dan katta yig‘indiga ega guruhni tanlaydi.
3. MAX va HAVING
Vazifa: Har bir kategoriya bo‘yicha mahsulotlarning eng yuqori narxini topish va faqat 1000 dan katta narxga ega kategoriyalarni tanlash.
SQL so‘rovi:
Natija:
Elektronika
1500
Izoh:
MAX(narx) har bir kategoriya bo‘yicha mahsulotlarning eng katta narxini topadi.
HAVING MAX(narx) > 1000 faqat eng katta narxi 1000 dan katta bo‘lgan kategoriyani tanlaydi.
4. MIN va HAVING
Vazifa: Har bir kategoriya bo‘yicha mahsulotlarning eng kichik narxini topish va faqat 100 dan kichik narxga ega kategoriyalarni tanlash.
SQL so‘rovi:
Natija:
Mebel
50
Izoh:
MIN(narx) har bir kategoriya bo‘yicha eng kichik narxni topadi.
HAVING MIN(narx) < 100 faqat 100 dan kichik qiymatga ega guruhlarni tanlaydi.
5. HAVING va WHERE Birgalikda Ishlatish
Vazifa: Narxi 200 dan katta bo‘lgan mahsulotlarni tanlab, ularni kategoriya bo‘yicha guruhlash va faqat yig‘indisi 1000 dan katta bo‘lgan kategoriyalarni ko‘rsatish.
SQL so‘rovi:
Natija:
Elektronika
2500
Izoh:
WHERE narx > 200 sharti guruhlashdan oldin yozuvlarni filtrlash uchun ishlatiladi.
HAVING SUM(narx) > 1000 guruhlashdan keyin yig‘indisi 1000 dan katta bo‘lgan guruhlarni tanlaydi.
HAVING Shartining Afzalliklari
Guruhlangan natijalarni filtrlash imkonini beradi.
Agregat funksiyalar (COUNT, SUM, AVG, MAX, MIN) bilan ishlaydi.
WHERE sharti bilan birgalikda ishlatiladi.
HAVING Shartining Cheklovlari
HAVING sharti agregat funksiyalar bilan ishlatilganda samarali.
Katta hajmdagi ma'lumotlar bilan ishlashda sekin ishlashi mumkin.
Xulosa
HAVING sharti GROUP BY bilan ishlatiladi va guruhlangan ma'lumotlarga filtr qo‘llaydi.
Agregat funksiyalar (COUNT, SUM, AVG, MAX, MIN) bilan birgalikda ishlaydi.
WHERE sharti guruhlashdan oldin, HAVING esa guruhlashdan keyin ishlaydi. Bu buyruq ma'lumotlarni guruhlash va guruhlangan natijalarni aniq bir shart bo‘yicha tahlil qilish imkonini beradi.
Last updated