SQL agregat funktsiyalari - SUM, MIN, MAX, AVG, COUNT. SQL summasida hisob-kitoblarni qo'llang

Golovna / Sozlanmoqda

Biz sumkalarimizni to'ldirishimiz kerak. Biroq, bu SQL modifikatsiyasining natijalari, ammo ma'lumotlar bazasi jadvali qiymatlarining xulosalari. SQL agregat funktsiyalari bitta natija qiymatini ayirish orqali qiymatga nisbatan ishlaydi. Eng ko'p ishlatiladigan funktsiyalar SQL agregat funktsiyalari SUM, MIN, MAX, AVG va COUNT. Agregat funktsiyalarning turg'unligining ikki turi mavjud. Birinchisi: agregat funktsiyalar quvvatga bo'ysunadi va bitta natija qiymatini aylantiradi. Boshqalar: Agregat funktsiyalari har bir guruhdan olingan qiymatlarni ajratib olish uchun maydonlar bo'yicha guruhlash uchun SQL GROUP BY operatoridan foydalanadi. Guruhlashtirmasdan agregat funktsiyalarni tanlashni ko'rib chiqamiz.

SQL SUM funksiyasi

SQL SUM funktsiyasi ma'lumotlar bazasi jadvalining yig'indisi qiymatini aylantiradi. Siz faqat nuqtaga, qaysi raqamlarning ma'nosiga yopishib olishingiz mumkin. Natijani olish uchun SQL so'rovi quyidagicha boshlanadi:

SUM (COLUMN_NAME) ni tanlang ...

Bu iboradan keyin FROM (TABLE_NAME) va keyingi WHERE bandidan keyin aql kelishi mumkin. Bundan tashqari, element nomidan oldin DISTINCT ko'rsatilishi mumkin, ya'ni faqat noyob qiymatlar kiritilgan. Barcha qiymatlar sug'urta uchun qoplanadi (buning uchun siz ayniqsa DISTINCT emas, balki ALL ni kiritishingiz mumkin, lekin HAMMA so'zi majburiy emas).

Agar siz ushbu darsning ma'lumotlar bazasiga MS SQL Serverda kirmoqchi bo'lsangiz, lekin ma'lumotlar bazasi kompyuteringizda o'rnatilmagan bo'lsa, uni bu yerga yuborilgan ko'rsatmalarga amal qilib o'rnatishingiz mumkin. .

Boshidan kompaniyaning ma'lumotlar bazasidan foydalanish mumkin - Company1. Ma'lumotlar bazasi, jadval va yonayotgan ma'lumotlar jadvalini yaratish uchun skript - bu maqsad uchun faylda .

dumba 1. Ularning sho'ba korxonalari va josuslari haqidagi ma'lumotlarga ega kompaniyalarning ma'lumotlar bazasi mavjud. Xodimlar jadvali, shuningdek, xodimlarning ish haqi to'g'risidagi ma'lumotlarga mos keladi. Jadvaldagi tanlov quyidagicha ko'rinadi (rasmni kattalashtirish uchun sichqonchaning chap tugmasi bilan bosing):

Barcha ish haqi to'lovlari miqdorini chiqarish uchun quyidagi buyruqdan foydalaning (MS SQL Serverda - USE company1 forvard dizaynidan;):

Xodimlardan SUM (ish haqi) TANLASH

Bu 287664.63 raqamiga yoziladi.

Va hozir . Biz allaqachon narsalarni tartibga solishni boshlaymiz, ularni amaliy narsalarga yaqinlashtiramiz.

SQL MIN funksiyasi

SQL MIN funksiyasi raqamlar kabi qiymatlar bilan ham ishlaydi va raqamning minimal qiymatini aylantiradi. Bu funksiya SUM funksiyasiga o'xshash sintaksisga ega.

Butun 3. Ma'lumotlar bazasi va jadval 1-ilovadagi kabi.

42-bo'limda ishchi kuchining eng kam ish haqi to'g'risida ma'lumot olish kerak. Kimlar uchun quyidagi so'rovni yozmoqdamiz (MS SQL Serverda - forvard konstruktsiyasi USE company1 bilan;):

To'g'ri qiymat 10,505,90.

Men qo'ng'iroq qilaman mustaqil rahbarlik huquqi. Kimning va boshqa huquqlar nafaqat xodimlar jadvalini, balki kompaniyalarning bo'linmalari to'g'risidagi ma'lumotlarni o'z ichiga olgan Tashkilotlar jadvalini ham talab qiladi:


Butun 4. Xodimlar jadvalidan oldin kompaniyalarning bo'linmalari to'g'risidagi ma'lumotlarni o'z ichiga olgan tashkilot jadvali qo'shiladi. Bostonda yetishtirilgan Veddilydan bitta spivorotenik tomonidan qayta ishlangan jinslarning minimal sonini kiriting.

SQL MAX funktsiyasi

SQL MAX funktsiyasi shunga o'xshash tarzda ishlaydi va shunga o'xshash sintaksisdan foydalanadi, u barcha qiymatlar orasidagi maksimal qiymatni hisoblash kerak bo'lganda muzlaydi.

Butun 5.

42-bo'limda talaba ishchilarining maksimal ish haqini aniqlash kerak. Ular uchun quyidagi yozuvni yozamiz (MS SQL Serverda - USE company1 forvard konstruktsiyasi bilan);

Qaytish qiymati 18352.80

Prishaning soati mustaqil o'sish huquqi.

Butun 6. Men yana ikkita jadval bilan ishlayapman - Xodimlar va Org. Bo'linma nomini va komissiyaning maksimal qiymatini kiriting, bu sizga bo'linmalardan (bo'linma) Sharqiy guruhga tegishli bo'lgan bo'linishdan bir sarmoyani olib tashlash imkonini beradi. Vikoristati JOIN (birlashtirilgan jadval) .

SQL AVG funksiyasi

Oldingi funksiya tavsiflari sintaksisi toʻgʻri va SQL AVG funksiyasiga oʻxshash. Bu funktsiya shpalning o'rta qiymatining o'rta qiymatini aylantiradi.

Butt 7. Ma'lumotlar bazasi va jadval oldingi dumba bilan bir xil.

Iltimos, 42-bo'limda harbiy xizmatchilarning o'rtacha ish staji haqida bizga xabar bering. Biz kimlar uchun quyidagi so'rovni yozmoqdamiz (MS SQL Serverda - oldinga inshoot USE company1 bilan;):

Natijada 6,33 bo'ladi

Button 8. Biz bitta stol bilan ishlaymiz - Xodimlar. 4 yildan 6 yilgacha ish tajribasiga ega bo'lgan ishchilarning o'rtacha ish haqini kiriting.

SQL COUNT funktsiyasi

SQL COUNT funktsiyasi ma'lumotlar bazasi jadvalidagi bir qator yozuvlarni aylantiradi. Agar siz so'rovga SELECT COUNT(COLUMN_NAME) ... kiritsangiz, natijada ustun qiymatlari NULL (qiymatlanmagan) bo'lgan yozuvlar hisobga olinmagan holda ko'p sonli yozuvlar bo'ladi. Agar yulduzchadan foydalansangiz va argumentni SELECT COUNT(*) ... deb boshlasangiz, natija jadvaldagi barcha yozuvlar (qatorlar) soni bo'ladi.

Button 9. Ma'lumotlar bazasi va jadval oldingi dumba bilan bir xil.

Komissiyalarni olib tashlash uchun barcha homiylar sonini bilish kerak. Comm ustunining qiymati NULL bo'lmagan serverlar soni, to'g'rirog'i, boshlang'ich yozuv (MS SQL Serverda - USE company1 ning oldingi konstruktsiyasi bilan;):

Xodimlardan COUNT (Comm) TANLANING

Natija 11 bo'ladi.

Button 10 Ma'lumotlar bazasi va jadval oldingi dumba bilan bir xil.

Agar siz jadvalda qancha yozuv borligini bilishingiz kerak bo'lsa, COUNT funktsiyasiga argument sifatida yulduzchadan foydalanishingiz mumkin (MS SQL Serverda - USE kompaniyasining oldinga konstruktsiyasi bilan;):

Xodimlardan COUNT (*) TANLANG

Natija 17 bo'ladi.

Kelgusida o'zini o'zi boshqarish huquqi Siz vikoristingizni to'ldirishingiz kerak.

Button 11. Biz bitta stol bilan ishlaymiz - Xodimlar. Rejalashtirish bo'limidagi ishchilar sonini kiriting (tekisliklar).

SQL GROUP BY (guruhlangan) dan funksiyalarni bir vaqtning o'zida jamlash

Endi SQL GROUP BY operatori yordamida agregat funktsiyalarning ta'rifini ko'rib chiqamiz. SQL GROUP BY operatori ma'lumotlar bazasi jadvalidagi ustunlarning natijaviy qiymatlarini guruhlash uchun ishlatiladi. Veb-saytda dars, ushbu operatorga bag'ishlanish .

"Portal Stunning 1" ma'lumotlar bazasini tekshiring. Ma'lumotlar bazasi, jadvallar va ma'lumotlar jadvallarini yaratish uchun skript - quyidagi faylda .

Button 12 Bundan tashqari, portalning ma'lumotlar bazasi ajoyib. Bir kun davomida berilgan ovozlar haqidagi ma'lumotlarni ko'rsatish uchun E'lonlar jadvalini o'rnatishingiz kerak bo'ladi. Turkum bo'limi katta toifalar haqidagi ma'lumotlarni o'z ichiga oladi (masalan, Buzilmaslik), Ehtiyot qismlar bo'limida toifaga kiritilgan boshqa qismlar haqida ma'lumot mavjud (masalan, Kvartiralar va Kottejlar qismlari Buzilmaslik toifasining qismlari). Birliklar bo'limida qabul qilingan arizalar soni to'g'risidagi ma'lumotlar, "Pul" bo'limida esa arizalar uchun yig'ilgan pul miqdori haqida ma'lumotlar mavjud.

TurkumQismBirliklarPul
TransportAvtotransport vositalari110 17600
NerukhomistKvartiralar89 18690
NerukhomistDachalar57 11970
TransportMototsikllar131 20960
Bud materiallariDoshki68 7140
Elektrotexnikatelevizorlar127 8255
ElektrotexnikaMuzlatgichlar137 8905
Bud materiallariRegips112 11760
DozvilKitoblar96 6240
NerukhomistBudinki47 9870
DozvilMusiqa117 7605
DozvilO'ynang41 2665

SQL GROUP BY operatoridan foydalanib, siz har bir toifadagi hujjatlarni topshirish uchun olingan tiyinlar summasini bilib olishingiz mumkin. Biz quyidagi so'rovni yozamiz (MS SQL Serverda - USE adportal1; oldingi konstruktsiyasidan foydalangan holda):

Turkum boʻyicha Eʼlonlar guruxidan pul sifatida SOUM (pul) ni tanlang

Button 13 Ma'lumotlar bazasi bir xil jadval - o'tmishda ishlatilgan.

Ko'rib turganingizdek, SQL GROUP BY operatori teri toifasining qaysi qismida eng ko'p chalkashlikni oldi. Biz quyidagi so'rovni yozamiz (MS SQL Serverda - USE adportal1; oldingi konstruktsiyasidan foydalangan holda):

Turkum, qism, MAX (birliklar) ni E’lonlar guruxidan Turkum bo‘yicha maksimal qilib TANLASH

Natijada jadval bo'ladi:

Moddalar va individual qiymatlar bitta jadvalda ko'rsatilishi mumkin qo'shimcha operator UNION uchun so'rovlar natijalarini birlashtirish .

Relyatsion ma'lumotlar bazalari va SQL tili

Arifmetik operatorlarning xilma-xilligi va hisoblash usullari tasvirlangan. COUNT, SUM, AVG, MAX, MIN subbag (agregat) funksiyalari hisobga olinadi. GROUP BY operatoridan ma’lumotlarni tanlashni guruhlash uchun foydalanish misoli mavjud. HAVING taklifining turg'unligi tasvirlangan.

Pobudova hisoblash maydonlari

Eshik uchun zagalny vipadku da hisoblangan (sayohat qiluvchi) maydon SELECT ro'yxatida joriy SQL tilini kiriting. Bu taʼriflar qoʻshish, almashtirish, koʻpaytirish va boʻlimga oid arifmetik amallarni hamda SQL tili funksiyalaridan foydalanishni oʻz ichiga oladi. Siz jadval yoki so'rovning istalgan ustunining (maydonining) nomini ko'rsatishingiz yoki aniq ko'rsatmaning FROM bandlari ro'yxatida ko'rsatilgan jadval yoki so'rovdagi ustun nomini tanlashingiz mumkin. Katlanadigan burmalar paydo bo'lganda, sizga ibodatxonalar kerak bo'lishi mumkin.

SQL standartlari natijalar jadvalining ustunlari nomlarini aniq belgilashga imkon beradi, odatda AS iborasi ishlatiladi.

Element.Nomi, Tovar.Price, Item.Sifat, Tovar.Narx*Buyum.Sifatni O'ZBEKISTON ICHKI JOIN Element BO'YICHA ICHKI QO'SHILGAN BO'LGAN O'ZBEKISTON IQTISODIYoTI. Butt 6.1. Rozraxunok zagalnoy vartosti derzhannoi ugol.

Butt 6.2. Mijozlarning ismlari va bosh harflaridan kompaniyalar ro'yxatini tanlang.

Kompaniyani tanlang, Taxallus+""+ Chap(Ism,1)+"."+Chap(Otasi tomonidan,1)+"."Mijozdan PIB AS Butt 6.2. Belgilangan nomlar va dastlabki mijozlardan kompaniyalar ro'yxatini tanlang.

Wikoristan yozuvi chap funksiyaga ega, bu sizga ma'lum bir vaqtda matnga bitta yovuz belgi kiritish imkonini beradi.

Butt 6.3. Belgilangan sanalar va sotish oylaridan mahsulotlar ro'yxatini tanlang.

Element.Im, Yil(Sana) Yil, Oy(Sana) OY SOSIB TANGLASH ICHKI JOIN element ON Item.ItemCode=Item.ItemCode Butt 6.3. Belgilangan sanalar va sotish oylaridan mahsulotlar ro'yxatini tanlang.

Qidiruv tizimida oy va sanani ko'rsatish uchun Yil va Oy funksiyalari mavjud.

Vikoristannaya pídsumkovyh funktsiyalari

Qo'shimcha yordam uchun sumka (agregat) funktsiyalari SQL so'rovida siz chiqish to'plamidagi tanlangan qiymatlarning ko'pligi haqida bir qator qo'shimcha statistik ma'lumotlarni olishingiz mumkin.

Koristuvachevi mavjud bunday asosiy sumka funktsiyalari:

  • Count (Viraz) - SQL so'rovlarining chiqish to'plamidagi yozuvlar sonini ko'rsatadi;
  • Min/Maks (Viraz) - berilgan maydonning eng kichik va eng yuqori qiymatini aniqlash;
  • Avg (viraz) - bu funksiya tanlangan yozuvlarning qo'shiq maydonida saqlanadigan shaxsiy qiymatning o'rtacha qiymatini ochishga imkon beradi. Demak, o'rtacha arifmetik qiymatlar mavjud. ularning miqdoriga bo'lingan qiymat yig'indisi.
  • Sum (Viraz) - tanlangan yozuvlarning tanlangan maydonidagi kabi shaxssiz qiymat miqdorini hisoblab chiqadi.

Ko'pincha qahramonlarning ismlari ramz sifatida namoyon bo'ladi. Virazni quyidagi jadvalda hisoblash mumkin.

Bu funktsiyalarning barchasi jadvalning bitta ustunidagi qiymatlar yoki arifmetik ifoda bilan ishlaydi va bitta qiymatni aylantiradi. COUNT, MIN va MAX funksiyalari raqamli va raqamli bo‘lmagan maydonlar bilan cheklangan, SUM va AVG funksiyalari esa faqat COUNT(*) bayrog‘i ortidagi raqamli maydonlar uchun ishlatilishi mumkin. Har qanday funktsiya natijalarini hisoblashda barcha bo'sh qiymatlar o'chiriladi, shundan so'ng kerakli operatsiya faqat yo'qolgan ma'lum qiymatlarga kamayadi. COUNT(*) opsiyasi COUNT funktsiyaning maxsus versiyasi bo'lib, uning maqsadi bo'sh, takroriy yoki boshqa shi ma'nosi mavjudligidan qat'i nazar, natijada olingan jadvaldagi barcha qatorlarni saqlab qolishdir.

Agar boshqa funktsiyani ishga tushirishdan oldin takroriy qiymatlarni o'chirib qo'yishingiz kerak bo'lsa, ularning oldiga DISTINCT kalit so'zini qo'ying. Bu MIN va MAX funktsiyalari uchun hech qanday ma'noga ega emas, lekin natijaga SUM va AVG funktsiyalarining natijalari ta'sir qilishi mumkin, ular oldindan e'tiborga olinishi kerak, bu muayyan teri muammosida mavjud bo'lishi mumkin. Bundan tashqari, har qanday so'rovda DISTINCT kalit so'zini bir martadan ko'p bo'lmagan holda ko'rsatish mumkin.

Shuni ta'kidlash juda muhim sumka funktsiyalari Ulardan faqat SELECT takliflar ro'yxatida va HAVING takliflar omborida foydalanish mumkin. Boshqa hollarda, bu qabul qilinishi mumkin emas. SELECT bandining ro'yxati qasos olish uchun bo'lsa sumka funktsiyalari, va matn GROUP BY kundalik iborasi bilan kiritiladi, bu guruh ma'lumotlarini birlashtirishni ta'minlaydi, so'ngra takliflar ro'yxatining elementlaridan SELECT ni maydonlardagi har qanday xabarlarga kiritish mumkin emas, vaziyatdan tashqari, agar maydonlar argument sifatida harakat qilsa sumka funktsiyalari.

Butt 6.4. Shuning uchun men mahsulotni alifbo tartibida nomlashga ehtiyot bo'laman.

Minimal (mahsulot nomi) SOQIYAT TANGLASH Butt 6.4. Mahsulotni alifbodan keyin birinchi bo'lib nomlang.

Butt 6.5. Xursandchiliklar sonini ko'rib chiqing.

Count(*) ni tanlang. Iltimos, elementlar soni Butt 6.5. Xursandchiliklar sonini ko'rib chiqing.

Butt 6.6. Sotilgan tovarlarning umumiy miqdorini hisoblang.

Qoniqishdan mahsulot_miqdori sifatida summani(Yoqarli.Sifatni) TANlang Butt 6.6. Sotilgan tovarlarning umumiy miqdori qiymati.

Butt 6.7. Sotilgan mahsulotning o'rtacha narxini hisoblang.

O'rtacha(Mahsulot.Price) O'RNX_NARX O'RNATISH O'RNATISH SO'YIB O'RNATISH ICHKI TO'LMALARGA QO'SHILING Product.ProductCode=Product.ProductCode; Butt 6.7. Sotilgan tovarlarning o'rtacha narxi.

YUMMNI (Mahsulot.Narx*Narx.Sifat) TANLANGAN XARLI SOTIB MAHSULOT ICHKISIGA QOʻSHILING Product.ProductCode=Purpose.ProductCode. Butt 6.8. Pídrakhunok varosti tovarlar sotdi.

Taklif GROUP BY

Ko'pincha so'rovlarda oraliq sumkalarni shakllantirish kerak bo'ladi, shunda so'rovda "terining ..." iborasi paydo bo'ladi. Shuning uchun SELECT operatorida GROUP BY bandi ishlatiladi. GROUP BY ga ega bo'lgan so'rov guruhlash so'rovi deb ataladi, chunki keyingi SELECT operatsiyasi natijasida o'chirilgan ma'lumotlar birgalikda guruhlanadi, shundan so'ng atrofdagi guruhlar bitta umumiy qatorda yaratiladi. SQL standarti SELECT bandi va GROUP BY bandi bir-biri bilan chambarchas bog'liq bo'lishini talab qiladi. SELECT iborasida GROUP BY iborasi mavjudligi sababli, SELECT iborasidagi ro'yxat elementi butun guruh uchun yagona qiymat uchun javobgardir. Bundan tashqari, SELECT iborasi quyidagi turdagi elementlarni o'z ichiga olishi mumkin: maydon nomlari, sumka funktsiyalari, haddan tashqari sug'urta elementlari kombinatsiyasini o'z ichiga olgan doimiylar va ifodalar

SELECT takliflar roʻyxatida joylashgan barcha maydon nomlari GROUP BY bandida boʻlishi kerak – agar nom gʻolib boʻlsa, koʻchirish sharti bilan. sumka funktsiyalari. Teskari qoida adolatli emas - GROUP BY bandi SELECT bandlari ro'yxatidagi kabi nomlarga ega bo'lishi mumkin.

WHERE bandi GROUP BY bilan birlashgani uchun u birinchi o'rinda turadi va guruhlashdan keyin aqlni qondiradigan qatorlar keladi.

SQL standartida aytilishicha, guruhlash amalga oshirilganda barcha kunlik qiymatlar teng deb hisoblanadi. Agar bitta guruh ustunidagi jadvalning ikkita satrida NULL qiymatlar va boshqa barcha noto'g'ri guruh ustunlarida bir xil qiymatlar bo'lsa, ular bir xil guruhga joylashtiriladi.

Butt 6.9. Har bir xaridor tomonidan amalga oshirilgan xaridlarning o'rtacha miqdorini hisoblang.

Client.Name, Avg(Pleasure.Quality) O'rtacha_miqdor sifatida MIZNING ICHKI QO'SHILIShDAN TANlang Iltimos, Client.ClientCode=Pleasure.CustomerCode GROUP BY Client.Name Butt 6.9. Har bir xaridor tomonidan amalga oshirilgan xaridlarning o'rtacha miqdorini hisoblash.

"Teri xaridori" iborasi SQL so'rovida taklif shaklida o'z ifodasini topdi. Client.Name BO'YICHA GURUHLASH.

Butt 6.10. E'tiborlisi, Yaku Sumuga teri uchun mahsulot sotilgan.

Mahsulot nomini, summasini (Mahsulot.Narx*Maqsad.Sifatni) TANLANG. Mahsulotni ICHKIDAN XARTA QO'SHILING. Butt 6.10. Buning evaziga teri mahsuloti so'mga sotilgan.

Mijoz.Kompaniyani tanlang, Mijozdan mahsulot_miqdori (maqsad.kod) SOZIB Client ON INNER JOIN Client ON Client.ClientCode=Place.CustomerCode GROUP BY Client.Company Butt 6.11. Teri kompaniyasi tomonidan ishlab chiqarilgan bir qator narsalarni davolang.

Client.Company, Sum(Purpose.Quality) AS Sotish_Sifat, Sum(Mahsulot.Narx*Narx.Miqdor) SOTIB TANGLANING. Mijoz. Firma Butt 6.12. Pídrakhunok zagalí̈ kíkostí teri kompaniyasi tomonidan mahsulotga va uning yaxshiligiga sotib olingan.

Butt 6.13. Oyiga teri mahsulotlarining umumiy narxini hisoblang.

Mahsulot.Nomi, Oy(Maqsad.Sana) AS Oy, Sum(Mahsulot.Narx*Narx.Sifat) XARLI SOTIB MAHSULOT ICHKIDAN QOʻSHILING. )) Butt 6.13. Bir oylik charm buyumlarning umumiy qiymatining qiymati.

Butt 6.14. Teri oyiga birinchi teri mahsulotining umumiy qiymatini hisoblang.

Element.Nomi, Oy(Maqsad.Sana) AS Oy, Sum(Narx*Narx.Sifat) XARLI BO'LGAN ICHKI QO'SHILING. . Nomi, Oyi (Iltimos. Sana) Butt 6.14. Teri oyiga birinchi teri mahsulotining umumiy qiymatining qiymati.

HAVING taklifi

HAVING yordamchisining orqasida, GROUP BY yordamchisining orqasida berilgan HAVING fikrlarini qondiradigan barcha avval guruhlangan ma'lumotlar bloklari ko'rsatiladi. Chiqish to'plamini "filtrlash" mumkin.

Aql onglardan QAYERDA farq qiladi:

  • HAVING natijada olingan ma'lumotlar to'plamidan yig'ilgan qiymatlar natijalariga ega guruhlarni o'z ichiga oladi;
  • QAYoda fikrni qoniqtirmaydigan guruhlangan yozuvdan jamlangan qiymatlarni ajratish kiradi;
  • WHERE ning donoligi tufayli agregat funktsiyalarni o'rnatish mumkin emas.

Aksiya 6.15. E'tiborlisi, sotuvlari uchtadan oshgan kompaniyalar soni.

Mijoz.Kompaniyani TANlang, (Maqsad.Sifatni) Mijozdan ICHKI QO'SHILGAN Client OF_Mijoz. Aksiya 6.15. Noqonuniy faoliyatni amalga oshiruvchi muhim kompaniyalar soni uchtaga ko'paydi.

Butt 6.16. 10 000 rubldan ortiq sotilgan mahsulotlar ro'yxatini kiriting.

Mahsulot nomini, summasini (Mahsulot. Narx*Narx. Sifat) TANLANGAN XARLI MAHSULOTNI ICHKIRIGA QO'SHILING. Butt 6.16. 10 000 krb dan ortiq miqdorda sotilgan tovarlarni topshirishni yangilash.

Butt 6.17. Belgilangan miqdorsiz 10 000 dan ortiq sotilgan mahsulotlar ro'yxatini kiriting.

Mahsulot nomini ICHKI QOʻSHILMADAN TANlang. Iltimos, Product.ProductCode=Purpose.MahsulotKodi Mahsulot BOʻYICHA GURUH BOʻLADI. Butt 6.17. Belgilangan miqdorsiz 10 000 dan ortiq sotilgan mahsulotlar ro'yxati mavjud.

Qanday qilib vikorist bo'lishni kimdan bilasiz? SUM funktsiyasi SQL Serverda (Transact-SQL) sintaksis va ilovalar yordamida.

Tavsif

SQL Serverda (Transact-SQL) SUM funksiyasi virusning umumiy qiymatini aylantiradi.

Sintaksis

SQL Server (Transact-SQL) da SUM funksiyasining sintaksisi:

Natijalarni bir yoki bir nechta yorliqlarda guruhlashda SUM funksiyasining ABO sintaksisi:

Argumentlar parametrlari

expression1 , expression2 , … expression_n - bu SUM funksiyasidan oldin kiritilmagan va SQL taklifining oxirida GROUP BY operatoridan oldin kiritilishi kerak bo'lgan ifodalar.
aggregate_expression - jamlab olinadigan ce stovets yoki viraz.
jadvallar - yozuvlarni olish kerak bo'lgan jadvallar. Hech bo'lmaganda bitta jadval aybdor, u FROM bayonotida qayta tartibga solingan.
WHERE shartlari - qat'iy aytganda. Tanlangan yozuvlar uchun izni saqlashga ishonch hosil qiling.

Zastosuvannya

SUM funksiyasi SQL Serverning yangi versiyalarida (Transact-SQL) o'zgartirilishi mumkin:
SQL Server vNext, SQL Server 2016, SQL Server 2015, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008, SQL Server 2005

Bitta maydon bilan misol

SQL Server (Transact-SQL) da SUM funksiyasidan qanday foydalanishni tushunish uchun SQL Server SUM funksiyasidan qanday foydalanishni ko‘rib chiqamiz.

Misol uchun, qancha mahsulot borligini bilib olishingiz mumkin, ularning soni 10 dan ortiq.

Ushbu ilovada SUM funksiyasi va SUM (miqdor) ifodasiga “Jami miqdor” taxallusi berilgan. Natijalar to'plami aylantirilganda, maydon nomi sifatida "Jami miqdor" paydo bo'ladi.

Vikoristan dumba DISTINCT

SUM funksiyasida DISTINCT operatoridan foydalanishingiz mumkin. Misol uchun, quyidagi SQL bayonoti yashirin ish haqi miqdorini noyob ish haqi qiymatlari bilan aylantiradi, bu erda ish haqi daryo uchun 29 000 dollardan past bo'ladi.

Yakbining ikki oyligi 24000 dollar bo'ldi. Daryoda SUM funksiyalari ushbu qiymatlardan faqat bittasini ishlatgan.

Vikoristanny formulali dumba

SUM funktsiyasiga mos keladigan ifoda bitta maydonni o'z ichiga olishi shart emas. Siz formuladan ham foydalanishingiz mumkin. Masalan, siz to'liq komissiya to'lashingiz mumkin.

Transact-SQL

Buyurtmalardan "Umumiy komissiya" SOTIB (sotish * 0,03) SO'MNI TANLASH;

SUM (sotish * 0,03) "Jami komissiya" sifatida tanlang

Buyurtmalardan;

Vikoristan dumba GROUP BY

Ba'zi hollarda siz GROUP BY operatoridan SUM funksiyasidan foydalanishingiz kerak bo'ladi.

SQL tilidagi SUM funksiyasi, soddaligiga qaramay, ma'lumotlar bazasi bilan ishlashning har bir soatida foydalanish qiyin bo'lishi mumkin. Bu qo'shimcha DBMS vositalariga ehtiyoj sezmasdan oraliq yoki pastki natijalarni qo'lda chiqarishga yordam beradi.

Funktsiya sintaksisi

Ko'pgina SQL tillarida yig'indi sintaksisi bir xil - argument sifatida faqat maydonlarning nomlari qo'llaniladi yoki ularning soni bo'yicha arifmetik amal bajariladi, buning uchun yig'indini amalga oshirish kerak.

Ayb o'yinlarida raqamlar yoki o'zgaruvchan ma'nolar ko'rinishida aniq ma'nolarni etkazish mumkin, ammo bunday "sxemalar" deyarli suiiste'mol qilinmaydi, chunki ular katta ahamiyatga ega emas. Quyida funksiyaning SQL tilidagi sintaksisi keltirilgan:

sum(a) - bu yerda parametr va vikoristuêtsya deyak raqamli qiymat yoki viraz sifatida

Esda tutingki, parametrdan oldin siz kalit so'zlarni kiritishingiz mumkin, masalan, DISTINCT yoki ALL, shunda faqat noyob yoki barcha qiymatlar bir xil bo'ladi.

SQL-da Wiki SUM

Funktsiyaning ishlash printsipini batafsilroq tushunish uchun bir nechta tugmachalarni ko'rib chiqing. SQL SUM ham natija sifatida, ham oraliq qiymat sifatida, masalan, ongni tekshirish uchun ishlatilishi mumkin.

Birinchi marta biz variantni ko'rib chiqamiz, agar siz teri mahsuloti uchun sotuvlar miqdorini o'zgartirishingiz kerak bo'lsa, shifokorning ofisida xaridlar soni ko'paytirilishi mumkin. Natijani aniqlash uchun hujumni viskoz qilish kifoya:

Savdo guruhidan mahsulot, so'm (sotib olish summasi) Mahsulot bo'yicha TANLASH;

Men ushbu jamoaga ularning har biri uchun xaridlar miqdori bilan noyob mahsulotlar ro'yxatini yuboraman.

Yana bir misol uchun, sotish miqdori qiymatidan oshib ketgan mahsulotlar ro'yxatini olishingiz kerak, masalan, 100. Ushbu vazifalar uchun natijani bir necha usullar bilan olishingiz mumkin, ulardan eng maqbuli bittasini kiritishdir. kirish:

MAHSULOTNI TANGLASH (Tanlash mahsuloti, sotuvdan so‘m (sotib olish summasi)) QERDA Sum > 100.

Bir yoki bir nechta kompyuter modellari ishlab chiqarilganligini qanday aniqlash mumkin? Kompyuterning texnik xususiyatlaridan kelib chiqib, uning o'rtacha narxini qanday aniqlash mumkin? Bu va ba'zi statistik ma'lumotlar bilan bog'liq boshqa oziqlanish uchun qo'shimcha ma'lumot uchun quyidagilarni tanlashingiz mumkin. sumka (agregat) funktsiyalari. O'tkazish standarti quyidagi jamlangan funktsiyalarni o'z ichiga oladi:

Barcha funktsiyalar bir xil qiymatni aylantiradi. Qaysi funktsiya ostida COUNT, MINі MAX har qanday turdagi ma'lumotlarga zastosovny, o'sha paytda SUMі AVG Vikorist faqat raqamli maydonlar uchun ishlatiladi. Funktsiyalar orasidagi farq COUNT(*)і COUNT(<имя поля>) NULL qiymatlari aybdor emas deb ishoniladi.

dumba. Shaxsiy kompyuterlarning minimal va maksimal narxini toping:

dumba. Ishlab chiqaruvchi A tomonidan chiqarilgan kompyuterlar sonini aniq bilib oling:

dumba. Agar biz A generatori tomonidan ishlab chiqarilgan turli xil modellar sonini hisobga oladigan bo'lsak, biz buni quyidagi tartibda shakllantirishimiz mumkin (Mahsulot jadvalida har bir model bir marta qayd etilganligini hisobga olgan holda):

dumba. Ishlab chiqaruvchi A tomonidan ishlab chiqarilgan turli xil modellar sonini toping. Oldidagiga o'xshash so'rov, unda siz ishlab chiqaruvchi A tomonidan ishlab chiqarilgan modellar sonini aniqlashingiz kerak. Shuningdek, siz turli xil modellar sonini bilishingiz kerak. stol kompyuteri (sotish uchun mavjud).

Statistik ko'rsatkichlarni tanlashda faqat noyob qiymatlar hisobga olinishini ta'minlash uchun, funktsiyalarni birlashtirish uchun argumentlar vikoristuvati mumkin DISTINCT parametri. Junior ALL parametri Vikorist hisob-kitoblarni kuzatib boradi va ustunda aylanadigan barcha ma'nolarning qisqacha mazmunini etkazadi. Operator,

Chunki biz o'chirilgan kompyuter modellari sonini yo'q qilishimiz kerak teriga xos virobnik, keyin vikorist bo'lish kerak taklif GROUP BY, keyin sintaktik tajovuzkor taklif QAYERDA.

Taklif GROUP BY

Taklif GROUP BY Tiqilib qolishi mumkin bo'lgan chiqish qatorlarining tanlangan guruhlari aniqlanadi jamlangan funktsiyalar (COUNT, MIN, MAX, AVG va SUM). Bu kunning taklifi bo'lgani uchun va agregat funktsiyalar aniqlanganligi sababli, barcha so'zlar taxmin qilingan nomlarga o'xshaydi. TANLASH, aybdorlar kiritilgan agregat funktsiyalari, va bu funksiyalar so'rovning predikatiga mos keladigan har qanday qatorlar to'plami bilan cheklanadi. Aks holda, SELECT roʻyxatidagi barcha elementlar, kiritilmagan agregat funktsiyasida ko'rsatish kerak GROUP BY taklifida. Natijada, barcha chiqish qatorlari ushbu guruhlardagi qiymatlarning turli kombinatsiyasi bilan tavsiflangan guruhlarga bo'linadi. Shundan so'ng, agregativ funktsiyalar teri guruhi bilan chegaralanadi. GROUP BY bilan barcha NULL qiymatlari teng deb hisoblanishini unutmang. NULL qiymatlarga ruxsat beruvchi maydonlarni guruhlashda barcha qatorlar bitta guruhga tushadi.
Yakshcho GROUP BY taklifining aniqligi uchun, SELECT daryosida Kundalik agregat funktsiyalari, Keyin oddiygina teri guruhidan bir vaqtning o'zida bir qatorni aylantiring. Ushbu parametr DISTINCT kalit so'zidan foydalanib, natijalar to'plamidagi takroriy qatorlarni o'chirish uchun ishlatilishi mumkin.
Keling, oddiy misolni ko'rib chiqaylik:
SELECT model, COUNT(model) AS Qty_model, AVG(narx) AS O'rtacha_narx
KOMPYUTERDAN
GROUP BY model;

Terining teri modeli uning qalinligi va o'rtacha quvvati bilan ajralib turadi. Bir xil model qiymatlariga ega bo'lgan barcha qatorlar guruh yaratadi va SELECT chiqishi teri guruhi uchun qiymatlar sonini va o'rtacha qiymatni hisoblab chiqadi. Natijada quyidagi jadval bo'ladi:
model Miqdor_model Oʻrtacha_narx
1121 3 850.0
1232 4 425.0
1233 3 843.33333333333337
1260 1 350.0

Agar SELECT sana bilan bog'langan bo'lsa, ma'lum bir sananing ko'rsatkichlarini hisoblash mumkin edi. Buning uchun sanani guruh operatori sifatida qo'shish kerak, so'ngra agregat funktsiyalar teri kombinatsiyasi qiymati uchun hisoblab chiqiladi (model-sana).

Bir guruh qo'shiqlar uxlayapti agregat funktsiyalarining qovushqoqligi qoidalari:

  • Natijada, men yozaman suv qatori olib tashlanmadi(yoki ushbu guruh uchun bitta qator), keyin har qanday agregat funktsiyalarni hisoblash uchun chiqish ma'lumotlari kunlik. Bunday holda, COUNT funktsiyasining natijasi nolga teng bo'ladi, qolgan barcha funktsiyalarning natijasi esa NULL bo'ladi.
  • Dalil agregat funktsiyalari Men agregat funktsiyalarni o'zim nazorat qila olmayman(funktsiya ichidagi funktsiya). Tobto. Bitta yozuvda, aytaylik, maksimal o'rtacha qiymatlarni saqlab qolish mumkin emas.
  • COUNT funktsiyasining natijasi butun son(INTEGER) Boshqa agregat funktsiyalar to'plangan ma'lumotlar qiymatlari turlarini kamaytiradi.
  • SUM funksiyasidan foydalanilganda, tahlil qilinayotgan ma'lumotlar turining maksimal qiymatidan oshgan natija ko'rsatiladi. kechir.

Ey azizim, nega qasos olmaysiz? taklif GROUP BY, Bu agregat funktsiyalari, tarkibiga kiradi taklif SELECT, barcha hosil bo'lgan qatorlarni chizish kerak. Men qasos olishni so'rayapman taklif GROUP BY, har bir qatorlar toʻplami, biroq ular birlashmasi yoki tayinlangan elementlar guruhi uchun muhim qiymatga ega boʻlishi mumkin. taklif GROUP BY, guruh hosil qilish, bu agregat funktsiyalari Teri guruhini diqqat bilan tekshirish kerak.

HAVING taklifi

Yakshcho taklif QAYERDA satrlarni filtrlash uchun predikatni bildiradi, keyin HAVING taklifi tiqilish guruhlashdan keyin qiymatlar ortidagi guruhlarni filtrlaydigan predikatga o'xshash qiymat uchun agregat funktsiyalari. Ushbu taklif ma'noni tekshirish uchun talab qilinadi, go'yo uni olib tashlash kerak agregat funktsiyalari tayinlangan bir necha qator yozuvlardan emas daryolar FROM, a z bunday qatorlar guruhlari. Shuning uchun bunday teskari o'zgarishlarga yo'l qo'yib bo'lmaydi daryo QAYERDA.

© 2022 androidas.ru - Android haqida hamma narsa