47sql tilida jadvallarni birlashtirish operatorlari unior join xamdasql tilida guruhli amallar having group by reja


SELECT CNum, CName, City FROM Customers


Download 74.09 Kb.
bet7/8
Sana24.12.2022
Hajmi74.09 Kb.
#1051770
1   2   3   4   5   6   7   8
Bog'liq
SQL tilida jadvallarni birlashtirish operatorlari unior join

SELECT CNum, CName, City FROM Customers
WHERE EXISTS
( SELECT * FROM Customers
WHERE City = 'San Jose' );

EXISTS ni faqat sodda ostki so‘rov bilan emas mutanosib so‘rov bilan ishlatish mumkin. Bu holda EXISTS ichki ostki so‘rovni tashqining xar bir satri uchun tekshiradi.


ALL, ANY, SOMEoperatorlaridan foydalanish.
ANY, ALL, va SOME ostki so‘rovlarni argument sifatida qabul qiluvchi EXISTS operatorni eslatadi, lekin relyasion operatorlar bilan birga ishlatilishi bilan farq qiladi. Bu tomondan ular ostki so‘rovlarga qo‘llaniluvchi IN operatorini eslatadi, lekin undan farqli faqat ostki so‘rovlar bilan ishlashadi. SOME va ANY operatorlari o‘zaro almashinuvchan.
Misol: bir shaxarda joylashgan sotuvchilar bilan buyurtmachilarni topish uchun ANY operatoridan foydalanish.
SELECT * FROM Salepeople
WHERE City = ANY ( SELECT City FROM Customers );
Operator ANY ostkiso‘rov chiqargan xamma qiymatlarni oladi, (bu misol uchun – Buyurtmachilar jadvalidagi xamma City qiymatlari), i va rost deb baxolaydi agar ularning ixtiyoriysi (ANY) tashqi so‘rov satridagi shaxar qiymatiga tengbo‘lsa. ANY operatori o‘rniga IN yoki EXISTS ishlatish mumkin, lekin ANY “= “ operatordan boshqa relyasionn operatorlarni ishlatishi mumkin. Misol: Xamma sotuvchilarni alfavit bo‘yicha kelgan buyurtmachilari bilan birga topish.
SELECT * FROM Salepeople
WHERE SName < ANY ( SELECT CName FROM Customers );
ANY to‘la bir qiymatli emas. Misol: Rimdagi buyurtmachilarga ko‘ra yuqori reytinga ega buyurtmachilarni topish.
SELECT * FROM Customers
WHERE Rating > ANY ( SELECT Rating FROM Customers
WHERE City = 'Rome' );
Ingliz tilida " ixtiyoriysidan katta ( bu erda City = Rome ) " baxolash quyidagicha talqin qilinadi, bu baxolash qiymati xar bir City = Rome xoldagi baxolash qiymatidan katta bo‘lishi kerak. SQL tilida ANY operatoridan foydalanilganda bunday emas. ANY to‘g‘ri deb baxolanadi agar ostki so‘rov shartga mos keluvchi ixtiyoriy qiymat topsa. YUqorida ko‘rilgan misol 300 va 200 baxoli xamma buyurtmachilarni topadi, chunki 300>200 dlya Rimdagi Giovanni uchun va 200>100 Rimdagi Pereira uchun.
Soddaroq aytganda < ANY ifodasi eng katta tanlangan qiymatdan kichik qiymatni, > ANY - eng kichik tanlangan qiymatdan katta qiymatni bildiradi.
ALL yordamida, predikat rost xisoblanadi, ostki so‘rov tanlagan xar bir qiymat tashqi so‘rov predikatidagi shartga mos kelsa.
Misol: Rimdagi xar bir buyurtmachidan baxolari yuqori bo‘lgan buyurtmachilarni chiqaring.

SELECT * FROM Customers


WHERE Rating > ALL (SELECT Rating FROM Customers
WHERE City = 'Rome' );
Bu operator Rimdagi xamma buyurtmachilar baxolari qiymatlarini tekshiradi. SHundan so‘ng Rimdagi xamma buyurtmachilardapn baxosi yuqori bo‘lgan buyurtmachilarni topadi. Rimda eng yuqori baxo - Giovanni (200). Demak 200 dan yuqori qiymatlar olinadi.
ANY operatori uchun bo‘lgani kabi ALL operatori uchun xam IN va EXISTS yordamida alьternativ konstruksiyalar yaratish mumkin.
ALL asosan tengsizliklar bilan ishlatiladi, chunki qiymat "xammasi uchun teng " ostki so‘rov natijasi bo‘lishi mumkin agag xamma natijalar bir xil bo‘lsa. SQL da < > ALL ifoda aslida ostki so‘rov natijasining " xech qaysisiga teng emas " ma’noni bildiradi. Boshqacha qilib aytganda proedikat rost agar berilgan qiymat ostki so‘rov natijalari orasida topilmagan bo‘lsa. Agar oldingi misolda tenglik tengsizlikka almashtirilsa, reytingi 300 ga teng bo‘lgan xamma buyurtmachilar chiqariladi, chunki ostki so‘rov 100 va 200 ga teng reytinglarni topgan.
ALL va ANY – orasidagi asosiy farq, ostki so‘rov xech qanday natija qaytarmagan xolatda ko‘rinadi. Bu xolda ALL - avtomatik (“TRUE”) ga teng, ANY bo‘lsa avtomatik (“FALSE”) ga teng.
Misol: Buyurtmachilar jadvali xammasini chiqarish
SELECT * FROM Customers
WHERE Rating > ALL ( SELECT Rating FROM Customers
WHERE City = 'Boston' );
Ko‘rsatilgan operatorlar bilan ishlashda NULL qiymatlar ma’lum muammolarni keltirib chiqaradi. SQL predikatda solishtirayotgan qiymatlardan biri bo‘sh (NULL) qiymat bo‘lsa, natija noaniqdir. Noaniq predikat, noto‘g‘ri predikatga o‘xshash, shuning uchun satr tashlab yuboriladi.

 UNION ifodasidan foydalanish.
UNION ifodasi bir yoki bir necha SQL so‘rovlar nitijasini birlashtirishga imkon beradi. 
Misol: Londonga joylashgan xamma sotuvchilar va buyurtmachilarni bitta jadvalda chiqaring.
SELECT SNum, SName FROM Salepeople
WHERE City = 'London'
UNION
SELECT CNum, CName FROM Customers
WHERE City = 'London';
Ikki yoki undan ortiq jadvallar jamlanganda ularning chiqish ustunlari jamlash uchun o‘zaro muvofiq bo‘lishi kerak. Bu shuni bildiradiki, xar bir so‘rov bir xil sondagi ustunlarni ko‘rsatib, bu ustunlar mos tartibda kelishi va xar biriga mos tiplarga ega bo‘lishi kerakyu Sonli maydonlar bir xil tipga va kattalikka ega bo‘lishi kerak. Simvolli maydonlar bir xil sondagi simvollarga ega bo‘lishi kerak. Moslik ta’minlovchi yana bir shart bo‘sh (NULL) qiymatlar jamlanma ixtiyoriy ustunida man etilgan bo‘lishi kerak. Bu qiymatlar boshqa jamlovchi so‘rovlarda xam man etilgan bo‘lishi kerak. Bundan tashqari siz ostki so‘rovlarda UNION operatoridan, xamda jamlovchi so‘rov SELECT operatorida agregat funksiyalardan foydalanishingiz mumkin emas. Siz individual so‘rovlardagi kabi natijani tartiblash uchun ORDER BY operatoridan foydalanishingiz mumkin. Jamlanma ustunlari chiqarish ustunlari bo‘lgani 4chun ulapr nomlarga ega bo‘lmaydi, shuning uchun nomeriga qarab aniqlanishi lozim. Demak ORDER BY operatorida ustun nomeri ko‘rsatilishi lozim. Foydali jamlanmalardan biri ikki so‘rovnni jamlashda ikkinchi so‘rov birinchi so‘rov chiqarib tashlagan satrlarni tanlashidir. Bu tashqi jamlanma deyiladi.
Sotish, foyda, xarajat va ish haqi kabi ma'lumotlarni tahlil qilish uchun tahlilchi uchun muhim tarkibiy qism. Ma'lumotlarni umumlashtirish tahlilchi uchun vizualizatsiya yaratish, xulosalar chiqarish va hisobot yozish uchun juda foydali. SQL-da GROUP BY Clause ma'lumotlar qatorini umumlashtirish yoki yig'ish vositalaridan biridir. Masalan, kunlik sotuvlarni sarhisob qiling va bitta chorakda birlashtiring va yuqori rahbariyatga ko'rsating. Xuddi shunday, agar siz kompaniyaning har bir bo'limida qancha xodimni hisoblashni istasangiz. U ma'lumotlar bazalarini bir yoki bir nechta ustunlar asosida guruhlaydi va natijalarni jamlaydi.
Ma'lumotlarni guruhlashdan so'ng siz HAVING Clause yordamida guruhlangan yozuvni filtrlashingiz mumkin. HAVING Clause berilgan shartga mos keladigan guruhlangan yozuvlarni qaytaradi. ORDER BY yordamida guruhlangan yozuvlarni ham saralashingiz mumkin. ORDER BY to'plangan ustunda GROUP BY dan keyin ishlatiladi.
Ushbu qo'llanmada siz GROUP BY Clause-ni tegishli misollar bilan batafsil o'rganasiz. Ushbu qo'llanmada o'rganadigan mavzular ro'yxati:

  • Maqola bo'yicha guruh

  • Klaud bor

  • Umumiy funktsiyalar

  • SQL-dagi "Qaerda va qayerda" bandini solishtiring

  • JOIN Misol bilan GROUP BY

  • Boshqa guruh bilan taqqoslash bo'yicha guruh

  • Amaliy topshiriq

  • Xulosa


Yuqoridagi misolda Jadval DeptID ustuni asosida guruhlangan va ish haqi bo'lim bo'yicha yig'ilgan.



Download 74.09 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling