53-Mazvu: sqlda Ichma-ich so‘rovlarning shakllanish


Download 31.38 Kb.
bet1/2
Sana15.06.2023
Hajmi31.38 Kb.
#1487070
  1   2

53-Mazvu: SQLda Ichma-ich so‘rovlarning shakllanish..
SQL-bandlar bo'yicha GROUP BY, HAVING va ORDER-dan qanday foydalanish kerak
SQL-bandlar bo'yicha GROUP BY, HAVING va ORDER-dan qanday foydalanish kerak - Kompyuterlar
Tarkib
SQL sizga GROUP BY, HAVING va ORDER BY bandlari yordamida kerakli ma'lumotlarni olish, tahlil qilish va namoyish qilish imkoniyatini beradi. Siz ulardan qanday foydalanishingizning ba'zi misollari.
GROUP BY maqolalari
Ba'zan, shaxsiy yozuvlarni olishdan ko'ra, siz bir guruh yozuvlar haqida biron bir narsa bilishni xohlaysiz. GROUP BY iborasi sizga kerakli vositadir.
Aytaylik, siz boshqa joyning savdo menejerisiz va siz o'zingizning savdo kuchingizning ish faoliyatini ko'rmoqchisiz. Agar siz oddiy so'rovni bajarsangiz, masalan quyidagi so'rov:
SELECT fakturaNo, Sotish muddati, sotuvchi, TotalSale FROM SOTISH;
ZAMKNIJ
Ushbu natija sizga sotuvchilaringiz qanchalik yaxshi ishlashlari haqida ba'zi bir fikrlarni beradi, chunki juda kam miqdordagi savdo ishtirok etadi. Biroq, real hayotda, kompaniya ko'proq sotuvga ega bo'ladi - va sotuv maqsadlariga erishilganligini aniqlash oson emas.
Haqiqiy tahlilni amalga oshirish uchun GROUP BY guruhini bittasi bilan birlashtirish mumkin yig'ma funktsiyalari (shuningdek, deyiladi) funktsiyalarni o'rnatish) savdo natijalarining miqdoriy rasmini olish. Masalan, o'rtacha sotuvchi (AVG) funktsiyasidan foydalanib, qaysi sotuvchi yuqori daromadli chiptalarning ko'proq sotilishini ko'rishingiz mumkin:
SELECT Saleserson, AVG (TotalSale) SOTISH GURUHINING SOTISh GURUHI tomonidan;
Ma'lumotlar bazasini boshqarish tizimi bilan so'rovni bajarish bir xil natijani oladi, ammo biroz boshqacha ko'rinishi mumkin.
Bennett sotuvlarining o'rtacha qiymati boshqa ikki sotuvchiga qaraganda ancha yuqori. Siz umumiy savdolarni o'xshash so'rov bilan taqqoslaysiz:
SELECT Saleserson, SUM (TotalSale) Sotuvchi tomonidan sotilgan guruhdan;
Bennett, shuningdek, eng yuqori o'rtacha sotuvga mos keladigan eng ko'p umumiy savdoga ega.
BOSHQA gaplar
Guruhlangan ma'lumotni HAVING gapidan foydalanib tahlil qilishingiz mumkin. HAVING YO'Q - bu filtr WHERE iborasiga o'xshash, lekin alohida satrlarda emas, balki qatorlar guruhida ishlaydigan filtr. BOSHQA gapning funktsiyasini tushuntirish uchun, savdo menejeri Bennettni o'z-o'zidan sinfda o'tiradi deb o'ylaysiz.
Uning ishlashi boshqa sotuvchilar uchun umumiy ma'lumotlarni buzadi. (Aha - egri chiziq.) Siz Bennettning sotilishini guruhlangan ma'lumotlardan quyidagicha HAVING yordamida foydalanib chiqarib tashlashingiz mumkin:
Sotuvchini tanlab oling, SUM (TotalSale) SOTISH GROUPDAN SALSFERSON BILAN SOTISHGA KERAK <> 'Bennett';
Faqat sotuvchi Bennett bo'lmagan joylar hisobga olinadi.
BUYURTMA BY-bandlari
Talablarning chiqish jadvalini alfavit tartibida ko'tarilish yoki kamayish tartibida ko'rsatish uchun ORDER BY buyrug'idan foydalaning. GROUP BY bandi satrlarni guruhlarga to'playdi va guruhlarni alifbo tartibida tartiblaydi, ORDER BY esa alohida qatorlarni tartiblaydi. ORDER BY iborasi so'rovda ko'rsatgan oxirgi gap bo'lishi kerak.

Agar so'rovda GROUP BY iborasi bo'lsa, birinchi navbatda, chiqish qatorlarini guruhlarga ajratadi. Keyin ORDER BY bandi har bir guruh ichidagi qatorlarni tartiblashtiradi.Agar sizda "GROUP BY" iborasi bo'lmasa, u holda jadval butun jadvalni guruh sifatida ko'rib chiqadi va "ORDER BY" buyrug'i uning barcha satrlarini ORDER BY buyrug'ida ko'rsatilgan ustun (yoki ustunlar) bo'yicha tartiblaydi.
Ushbu fikrni tushuntirish uchun SOTISH jadvalidagi ma'lumotlarni ko'rib chiqing. SALES jadvalida XarajatNo, Sotish kuni, Sotuvchi va TotalSale uchun ustunlar mavjud. Agar siz quyidagi misoldan foydalansangiz, barcha ma'lumotlarni SALES jadvalida ko'rasiz - lekin o'zboshimchalik bilan:
SELECT * SOTIB OLISH;
Bitta amalga oshirishda, siz jadvalga satrlarni joylashtirgan tartib bo'lishi mumkin; boshqa bir amalga oshirishda buyurtma eng so'nggi yangilanishlar bo'lishi mumkin. Agar kimdir ma'lumotlar bazasini qayta tashkil qilsa, buyurtma kutilmagan tarzda o'zgarishi mumkin. Odatda, qatorlarni istalgan tartibni belgilash yaxshi fikrdir.
Siz, masalan, SaleDate bo'yicha tartibda qatorlarni ko'rishni xohlashingiz mumkin:
SELECT * Sotishni buyurtma qilish orqali Buyurtma kuni;
Ushbu misol Sotish jadvalidagi barcha satrlarni SaleDate bo'yicha tartibda qaytaradi.
Xuddi shu SaleDate-ga ega qatorlar uchun odatiy buyurtma bajarishga bog'liq. Shu bilan birga, bir xil Sotish sanasini baham ko'radigan satrlarni qanday saralashni ko'rsatishingiz mumkin. Siz har bir SaleDate-ning sotilishini XarajatlarniNo bo'yicha tartibida ko'rishingiz mumkin:
SELECT * Sotuvdan buyurtma berish orqali Buyurtma kuni, fakturaNo;
Ushbu misol birinchi bo'lib SatDate tomonidan sotishni buyuradi; keyin har bir SaleDate uchun u InvoiceNo tomonidan sotishni buyuradi. Ammo ushbu misolni quyidagi so'rov bilan aralashtirib yubormang:
TANLASH * Xaridor tomonidan sotilgan buyurtma bo'yicha XarajatlarniNo, sotish muddati;
Ushbu so'rov birinchi navbatda INVOICE_NO tomonidan sotuvga buyurtma beradi. So'ngra har bir Xarajat-fakturalarNo uchun so'rov SaleDate tomonidan sotishni buyuradi. Ehtimol, bu siz istagan natijani bermaydi, chunki bitta hisob-faktura raqamida bir nechta savdo sanalari bo'lishi dargumon.
Quyidagi so'rov SQL ma'lumotni qanday qaytarishi mumkinligiga yana bir misoldir.
SELECT * Sotuvchidan buyurtma berish orqali, Buyurtma kuni;
Ushbu misol dastlab sotuvchi tomonidan, so'ngra SaleDate tomonidan buyurtma qilinadi. Ma'lumotni shu tartibda ko'rib chiqqandan so'ng, uni quyidagiga o'zgartirishni xohlashingiz mumkin:
SELECT * Sotuv kuni, sotuvchi tomonidan buyurtma asosida;
Ushbu misol satrlarni avval SaleDate va keyin Salesperson tomonidan buyurtma qiladi.
Ushbu barcha buyurtma namunalari ko'tarilgan (ASC) tartibda bo'lib, u odatiy tartiblash tartibidir. So'nggi SELECT avval sotuvlarni namoyish etadi - va ma'lum bir muddat ichida 'Bakers'dan oldin' Adams 'sotuvlarini ko'rsatadi. Agar siz (DESC) tushishni xohlasangiz, buyurtma ustunlaridan birini yoki bir nechtasini quyidagi tartibda belgilashingiz mumkin:
SELECT * Sotishni Buyurtma Buyurtmachisi tomonidan sotib oling, savdo do'koni;
Ushbu misol sotuv sanalari bo'yicha kamayib boruvchi buyurtmani, birinchi navbatda oxirgi sotuvlarni va sotuvchilarning alfavit tartibiga qo'yib, ortib borayotgan buyurtmani belgilaydi. Bu sizga Bennettning ishlashini boshqa sotuvchilarnikiga nisbatan qanday qilib barqarorligini yaxshiroq tasavvur qilish uchun kerak.

Download 31.38 Kb.

Do'stlaringiz bilan baham:
  1   2




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