SQL agregat funksiyalar: COUNT, SUM, AVG
GROUP BY darsida COUNT va SUM bilan tanishdik. Bu
darsda barcha asosiy agregat funksiyalarni ko’ramiz — ular ko’p
qatordan bitta umumiy natija chiqaradi: jami, o’rtacha, eng katta. Bu SQL
Boshlang’ich bo’limining yakuniy darsi.
mahsulotlar jadvali:
| id | nom | narx | soni | turi |
|---|---|---|---|---|
| 1 | Olma | 8000 | 50 | meva |
| 2 | Non | 3000 | 120 | non |
| 3 | Sut | 12000 | 30 | sut mahsuloti |
| 4 | Choy | 15000 | 40 | ichimlik |
| 5 | Banan | 14000 | 25 | meva |
| 6 | Qatiq | 9000 | 0 | sut mahsuloti |
| 7 | Suv | 4000 | 200 | ichimlik |
| 8 | Guruch | 18000 | 60 | don |
COUNT — sanash
COUNT(*) jadvaldagi qatorlar sonini beradi:
SELECT COUNT(*) AS jami FROM mahsulotlar;
O’zingiz ishga tushirib ko’ring — so’rovni tahrirlashingiz ham mumkin:
Natija — 8 (jami sakkiz mahsulot). GROUP BY bo’lmagani uchun butun
jadval bitta guruh sifatida sanaldi.
COUNT(ustun) esa faqat bo’sh bo’lmagan (NULL emas) qiymatlarni
sanaydi. Buni mijozlar da ko’ramiz (Malikaning yoshi NULL):
SELECT COUNT(*) AS jami, COUNT(yosh) AS yoshi_bor FROM mijozlar;
Natija: jami = 4, yoshi_bor = 3. COUNT(*) hammani, COUNT(yosh) esa
yoshi kiritilganlarni sanadi — NULL tashlab
yuborildi.
SUM va AVG — yig’indi va o’rtacha
SUM ustundagi sonlarni qo’shadi, AVG o’rtachasini beradi:
SELECT SUM(narx) AS jami_narx, AVG(narx) AS ortacha_narx FROM mahsulotlar;
Natija:
| jami_narx | ortacha_narx |
|---|---|
| 83000 | 10375 |
Barcha narxlar yig’indisi 83000, o’rtachasi 10375 (83000 ÷ 8).
MIN va MAX — eng kichik va katta
MIN eng kichik, MAX eng katta qiymatni topadi:
SELECT MIN(narx) AS eng_arzon, MAX(narx) AS eng_qimmat FROM mahsulotlar;
Natija: eng_arzon = 3000 (Non), eng_qimmat = 18000 (Guruch). MIN va
MAX matnda ham ishlaydi: MIN(nom) alifboda birinchisini (Banan),
MAX(nom) oxirgisini (Suv) beradi.
Bir so’rovda bir nechta funksiya
Agregatlarni birga ishlatish mumkin — umumiy hisobot bir so’rovda:
SELECT
COUNT(*) AS mahsulotlar,
SUM(soni) AS jami_dona,
AVG(narx) AS ortacha_narx,
MAX(narx) AS eng_qimmat
FROM mahsulotlar;
Natija — butun ombor haqida qisqa xulosa:
| mahsulotlar | jami_dona | ortacha_narx | eng_qimmat |
|---|---|---|---|
| 8 | 525 | 10375 | 18000 |
GROUP BY bilan — guruh bo’yicha
Agregatlar butun jadval o’rniga GROUP BY bilan har
guruh uchun hisoblanadi. Har turdagi o’rtacha narx:
SELECT turi, AVG(narx) AS ortacha FROM mahsulotlar GROUP BY turi;
Bu har tur uchun alohida o’rtacha beradi — meva, ichimlik va hokazo.
Amaliy mashq
Agregat funksiyalarni sinang:
COUNT(*)bilan jami mahsulotlar sonini oling;SUM,AVG,MIN,MAXni bitta so’rovda birlashtiring;mijozlardaCOUNT(*)vaCOUNT(yosh)ni solishtiring;WHERE turi = 'meva'qo’shib, faqat mevalar bo’yicha hisoblang;AVG(narx)natijasiniROUND(AVG(narx), 0)bilan yaxlitlang.
3-qadamdagi ikki son nega farq qiladi?
Qisqacha xulosa
- Agregat funksiyalar ko’p qatordan bitta natija chiqaradi.
COUNT(*)— barcha qatorlar;COUNT(ustun)—NULLbo’lmaganlar.SUM— yig’indi,AVG— o’rtacha,MIN/MAX— eng kichik/katta.SUM,AVG,MIN,MAXNULLni hisobga olmaydi.GROUP BYbilan har guruh,WHEREbilan filtrlangan qatorlar bo’yicha hisoblanadi.
Tabriklaymiz — SQL Boshlang’ich bo’limini yakunladingiz! Endi
ma’lumotlar bazasidan ma’lumot ola, qo’sha, o’zgartira va guruhlab hisoblay
olasiz. Keyingi bosqichda O’rta daraja — JOIN turlari (LEFT,
RIGHT), ichki so’rovlar (subquery), CREATE TABLE va indekslar bilan
chuqurroq ishlaymiz.