SELECT * FROM Orders WHERE SNum = ( SELECT DISTINCT SNum FROM Orders WHERE CNum = 21 );
Bu holda ostki so‘rov faqat bitta 11 qiymat chiqaradi, lekin umumiy holda bir necha qiymatlar bo‘lishi mumkin va ular ichidan DISTINCT faqat bittasini tanlaydi. Ixtiyoriy sondagi satrlar uchun avtomatik ravishda bitta qiymat hosil qiluvchi funksiya turi – agregat funksiya bo‘lib, undan ostki so‘rovda foydalanish mumkin.
Masalan, summasi 4 oktyabrdagi bajarilishi lozim bo‘lgan buyurtmalar summasi o‘rta qiymatidan yuqori bo‘lgan hamma buyurtmalarni aniqlang:
SELECT * FROM Orders WHERE AMT > ( SELECT AVG (AMT)
FROM Orders WHERE ODate = ‘1990/10/04’ );
Shuni nazarda tutish kerakki, guruhlangan agregat funksiyalar GROUP BY ifodasi terminlarida aniqlangan va agregat funksiyalar bo‘lsa ko‘p qiymatlar hosil qilishi mumkin. Agar ostki so‘rov IN operatoridan foydalanilsa, ixtiyoriy sondagi satrlar hosil qilish mumkin.
Misol: Londondagi sotuvchilar uchun hamma buyurtmalarni ko‘rsatish.
SELECT * FROM Orders WHERE SNum IN ( SELECT SNum FROM Salepeople WHERE City = 'London' );
Bu natijani jamlanma orqali hosil qilish mumkin. Lekin odatda, ostki so‘rovlar tezroq bajariladi. Siz ostki so‘rov SELECT jumlasida maydonga asoslangan ifodadan foydalanishingiz mumkin. Bu relyatsion operatorlar yordamida yoki IN yordamida amalga oshirilishi mumkin. Siz ostki so‘rovlarni HAVING ichida ishlatishingiz mumkin. Bu ostki so‘rovlar agar ko‘p qiymatlar qaytarmasa xususiy agregat funksiyalaridan GROUP BY yoki HAVING operatorlaridan foydalanishi mumkin.
Misol:
SELECT Rating, COUNT (DISTINCT CNum) FROM Customers GROUP BY Rating HAVING Rating > ( SELECT AVG (Rating) FROM Customers WHERE City = 'San Jose' );
Bu komanda San Jose dagi baholari o‘rtachadan yuqori bo‘lgan buyurtmachilarni aniqlaydi.
Korrellangan (mutanosib) bog‘langan ostki so‘rovlar.
SQL tilida ostki so‘rovlardan foydalanilganda tashqi so‘rov FROM qismidagi ostki so‘rovga mutanosib so‘rov yordamida murojaat qilishingiz mumkin. Bu holda ostki so‘rov asosiy so‘rov har bir satri uchun bir martadan bajariladi.
Misol: 3 oktyabrda buyurtma bergan hamma buyurtmachilarni toping.
Do'stlaringiz bilan baham: |