|
HAVING va WHERE bandlari orasidagi farq
|
bet | 3/12 | Sana | 24.11.2023 | Hajmi | 44,55 Kb. | | #105026 |
Bog'liq JSOONHAVING va WHERE bandlari orasidagi farq
Buni quyidagicha tushuntirish mumkin: WHERE bandi ma'lumotlarni guruhlashdan oldin qatorlarni filtrlaydi va HAVING bandi ma'lumotlar guruhlangandan keyin filtrlaydi. Bu muhim farq. WHERE bandi bilan chiqarib tashlangan qatorlar guruhga kiritilmaydi, aks holda bu hisoblangan qiymatlarni o'zgartirishi mumkin, bu esa o'z navbatida HAVING bandidagi guruh filtrlashiga ta'sir qilishi mumkin.
Endi o‘ylab ko‘ring: bitta gapda WHERE bandini ham, HAVING bandini ham ishlatish mumkin? Albatta mumkin. Aytaylik, siz oxirgi 12 oy ichida ikki yoki undan ortiq buyurtma bergan barcha mijozlarning ismlarini qaytarish uchun oldingi bayonot filtrini yaxshilashni xohlaysiz. Bunga erishish uchun siz faqat oxirgi 12 oy ichida qilingan buyurtmalarni hisobga oladigan WHERE bandini qo'shishingiz mumkin. Keyin kamida ikkita qatorga ega bo'lgan guruhlarni filtrlash uchun HAVING bandini qo'shasiz.
Buni yaxshiroq tushunish uchun quyidagi misolni ko'rib chiqaylik, unda har bir mahsulot uchun kamida 4 dollar yoki undan ko'proq narxda ikkita mahsulot taklif qiladigan barcha sotuvchilar ro'yxati keltirilgan.
SELECT vend_id, COUNT(*) AS num_prods FROM Products WHERE prod_price >= 4 GROUP BY vend_id HAVING COUNT(*) >= 2;
vend_id
|
num_prods
|
BRS01
|
3
|
FNG01
|
|
|
| |