O'tgan darsda biz COUNT yordamida qatorlarni sanashni o'rgandik. COUNT — bu agregat funksiya, ya'ni u ko'p qatorni qabul qilib, ulardan bitta umumiy natija qaytaradi.
Bu darsda yana ikkita foydali agregat funksiya bilan tanishamiz:
Misollar uchun mahsulotlar jadvalidan foydalanamiz:
| id | nomi | kategoriya | narx | ombor |
|---|---|---|---|---|
| 1 | Telefon | Elektronika | 5000000 | 10 |
| 2 | Noutbuk | Elektronika | 12000000 | 5 |
| 3 | Quloqchin | Elektronika | 300000 | 50 |
| 4 | Kitob | Kitoblar | 50000 | 100 |
| 5 | Daftar | Kanstovar | 8000 | 200 |
| 6 | Ruchka | Kanstovar | 3000 | 500 |
| 7 | Stol | Mebel | 800000 | 15 |
| 8 | Stul | Mebel | 250000 | 40 |
SUM(ustun) ustundagi barcha sonlarni qo'shib, yagona yig'indini qaytaradi. Masalan, do'kondagi barcha mahsulotlarning umumiy ombor sonini bilmoqchimiz:
SELECT SUM(ombor) FROM mahsulotlar;ombor ustunidagi barcha qiymatlar qo'shiladi: 10 + 5 + 50 + 100 + 200 + 500 + 15 + 40. Natija:
920Eslatma:
SUMfaqat son ustunlar uchun mantiqli — matn ustunini qo'shib bo'lmaydi.
AVG(ustun) ustundagi qiymatlarning o'rtacha qiymatini qaytaradi. U aslida ustunni qo'shib (SUM), qatorlar soniga (COUNT) bo'ladi.
Mahsulotlarning o'rtacha narxini topamiz:
SELECT AVG(narx) FROM mahsulotlar;Natija:
2301375.0Muhim:
AVGhar doim kasr son (float) qaytaradi — agar o'rtacha butun chiqsa ham, oxirida.0ko'rinadi (masalan15.0). BuSUMdan farqi:SUMbutun sonlarni qo'shsa, butun son qaytaradi.
AVG ba'zan juda uzun kasr son qaytaradi (masalan 2301374.875). Buni chiroyli ko'rsatish uchun ROUND funksiyasidan foydalanamiz:
SELECT ROUND(AVG(narx), 2) FROM mahsulotlar;ROUND(x, 2) x ni 2 xonagacha yaxlitlaydi. Ikkinchi son — nechta o'nlik xona qoldirishni bildiradi. Natija:
2301375.0Bitta SELECT so'rovida bir nechta agregatni yonma-yon yozish mumkin — ularni vergul bilan ajratamiz:
SELECT SUM(ombor), AVG(narx) FROM mahsulotlar;Natija ikkita ustunli bitta qator bo'ladi (ustunlar | belgisi bilan ajraladi):
920|2301375.0Demak, agregat funksiyalar bir-biriga xalaqit bermaydi — har biri o'z ustuni bo'yicha mustaqil hisoblanadi.
Pastdagi kod oynasida mahsulotlar jadvali allaqachon yaratilgan va to'ldirilgan. Sizning vazifangiz — bitta SELECT so'rovida barcha mahsulotlarning umumiy ombor sonini (SUM) va o'rtacha narxini (AVG, 2 xonagacha yaxlitlangan) chiqarish.