• Guruh bo’yicha filtrlash
  • HAVING
  • FROM Orders GROUP BY cust_id HAVING COUNT(*) >= 2; cust id orders 1000000001 2
  • 10-mavzu. Sqlda murakkab so’rovlar yaratish. Bir necha jadvallarni birlashtirish, ‘join’ lar bilan ishlash




    Download 44,55 Kb.
    bet2/12
    Sana24.11.2023
    Hajmi44,55 Kb.
    #105026
    1   2   3   4   5   6   7   8   9   ...   12
    Bog'liq
    JSOON

    ALL kalit so'zi. Ba'zi SQL ilovalari (masalan, Microsoft SQL Server) GROUP BY bandidagi majburiy bo’lmagan ALL kalit so'zini qo'llab-quvvatlaydi. U barcha guruhlarni, hatto mos keladigan qatorlarga ega bo'lmagan guruhlarni ham olish uchun ishlatilishi mumkin (bu holda natijada funksiya NULL ni qaytaradi)

    Eslatma. Ustunlarni nisbiy joylashuvi bo'yicha belgilash. Ba'zi SQL ilovalari GROUP BY bandidagi ustunlarni SELECT iborasi ro'yxatidagi joylashuvi bo'yicha belgilash imkonini beradi. Misol uchun, "GURUH BY 2,1" iborasi olinadigan ikkinchi ustun bo'yicha, keyin esa birinchi bo'yicha guruhlashni anglatishi mumkin. Ushbu stenogramma sintaksisi juda qulay bo'lsa-da, uni barcha SQL ilovalari qo'llab-quvvatlamaydi. Uning ishlatilishi, shuningdek, SQL bayonotlarini tahrirlashda xatoliklarning yuzaga kelishi ehtimoli juda yuqori bo'lgan ma'noda ham xavflidir.



    Guruh bo’yicha filtrlash

    SQL sizga GROUP BY bandidan foydalangan holda nafaqat ma'lumotlarni guruhlash, balki ularni filtrlash imkonini beradi, ya'ni so'rov natijalariga qaysi guruhlarni kiritish kerakligini va qaysi guruhlarni ulardan chiqarib tashlash kerakligini ko'rsating.


    Ammo WHERE bandi o'rniga nima ishlatilishi kerak? SQL-da bu maqsad uchun mos keladigan boshqa band mavjud: HAVING. Bu WHERE bandiga juda o'xshaydi. Darhaqiqat, siz allaqachon tanish bo'lgan WHERE bandidagi barcha turdagi iboralar HAVING bandida amal qiladi. Yagona farq shundaki, WHERE qatorlarni filtrlaydi va HAVING guruhlarni filtrlaydi.
    HAVING bandi barcha WHERE band operatorlarini qo'llab-quvvatlaydi.


    SELECT cust_id, COUNT(*) AS orders FROM Orders GROUP BY cust_id HAVING COUNT(*) >= 2;


    cust id orders
    1000000001 2

    Ushbu so'rovning dastlabki uchta satri avval muhokama qilingan SELECT iborasiga o'xshaydi. Biroq, oxirgi qatorda COUNT (*) >= 2 - ikki yoki undan ortiq buyurtma ifodasi yordamida guruhlarni filtrlaydigan HAVING bandi mavjud.


    Ko'rib turganingizdek, WHERE bandi bu yerda ishlamaydi, chunki filtrlash tanlangan qatorlar qiymatlariga emas, balki guruhning umumiy qiymatiga asoslanadi.


    Download 44,55 Kb.
    1   2   3   4   5   6   7   8   9   ...   12




    Download 44,55 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    10-mavzu. Sqlda murakkab so’rovlar yaratish. Bir necha jadvallarni birlashtirish, ‘join’ lar bilan ishlash

    Download 44,55 Kb.