Aggreget funksiyalar

All lectures for UZ purposes
Daraja , Dars
Mavjud

6.1 Aggreget funksiyalar ro'yxati

SQLda GROUP BY operatori bilan qatorlarni guruhlaganingda, SELECT operatorida guruhlangan ma'lumotlar ustida ishlaydigan funksiyalarni ishlatishing mumkin. Bu funksiyalarni aggreget funksiyalar deb ham atashadi.

Mana, ulardan eng mashhur bo'lganlari:

# Funksiya Tavsif
1 COUNT() Guruhda mavjud qiymatlar sonini qaytaradi
2 SUM() Guruhdagi qiymatlar yig'indisini qaytaradi
3 MAX() Guruhdagi maksimal qiymatni qaytaradi
4 MIN() Guruhdagi minimal qiymatni qaytaradi
5 AVG() Guruhdagi o'rtacha qiymatni qaytaradi
6 BIT_AND() Guruhdagi barcha qiymatlar ustida "AND" bitlik operatsiyasini bajaradi
7 BIT_OR() Guruhdagi barcha qiymatlar ustida "OR" bitlik operatsiyasini bajaradi
8 BIT_XOR() Guruhdagi barcha qiymatlar ustida "XOR" bitlik operatsiyasini bajaradi
9 GROUP_CONCAT() Guruhdagi barcha qiymatlarni bitta satrga birlashtiradi
Bu aggreget funksiyalarning to'liq ro'yxati emas, lekin qolganlari juda o'ziga xos va menimcha, ulardan keyingi 5 yil ichida foydalanmaysiz. Agar ular zarur bo'lsa, har doim o'zingizning SUBD rasmiy hujjatlarini o'qishingiz mumkin.

Endi bizning aggreget funksiyalarimiz bilan bir nechta misollarni ko'rib chiqamiz.

6.2 Xodimlarning maoshlarini tahlil qilayapmiz

Keling, employee jadvalidan xodimlarimiz haqida ba'zi statistikani hisoblab chiqamiz.

Birinchi savol: bizda nechta xodim bor?

Jadvalda barcha yozuvlar sonini bilmoqchi bo'lsangiz, aggreget funksiyani COUNT ishlatishingiz mumkin. So'rov quyidagicha bo'ladi:


SELECT COUNT(*) FROM employee
        

MySQL javob sifatida 6 sonini qaytaradi. Bizda bo'limda 6 xodim bor, mushukni ham qo'shib hisoblaganda. Hammasi to'g'ri.

Ikkinchi savol: barchaga oyiga qancha to'laymiz?

Bu savolga javob berish uchun barcha xodimlarning maoshlarini yig'ishimiz kerak. Buning uchun aggreget funksiyasini SUM() ishlatamiz.

So'rov quyidagicha bo'ladi:


SELECT SUM(salary) FROM employee
        

Diqqat qiling, bu safar biz qaysi ustun qiymatlarini yig'ayotganimizni aniq ko'rsatishimiz kerak. Biz salary ustunini ko'rsatdik. Axir biz jadvaldagi barcha maydonlarni shunchaki yig'a olmaymiz.

MySQL javob sifatida 461000 sonini qaytaradi. Bizning bo'limda 6 xodim bor va maosh 461 ming. Juda ko'p.

Va nihoyat, uchinchi savol: bo'limda maksimal va minimal maosh qancha? Shuningdek, o'rtacha maoshni ham hisoblaylik. Buning uchun MIN, MAX va AVG funksiyalari kerak bo'ladi.

Bu safar so'rov biroz murakkabroq bo'ladi, quyidagicha:


SELECT MIN(salary), AVG(salary), MAX(salary)
FROM employee
        

Bu so'rovning natijasi quyidagicha bo'ladi:

MIN(salary) AVG(salary) MAX(salary)
1000 76833.3333 200000

Bizning bo'limda minimal maosh 1000 dollar - juda yaxshi. Maksimal maosh esa 200 ming, lekin bu direktor.

Ammo o'rtacha maosh juda yuqori, xarajatlarni qandaydir optimallashtirish kerak. Yana bir mushukni yollaymiz va ishni tugatamiz :)

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION