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 |
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 :)
GO TO FULL VERSION