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:

idnomnarxsonituri
1Olma800050meva
2Non3000120non
3Sut1200030sut mahsuloti
4Choy1500040ichimlik
5Banan1400025meva
6Qatiq90000sut mahsuloti
7Suv4000200ichimlik
8Guruch1800060don

COUNT — sanash

COUNT(*) jadvaldagi qatorlar sonini beradi:

SELECT COUNT(*) AS jami FROM mahsulotlar;

O’zingiz ishga tushirib ko’ring — so’rovni tahrirlashingiz ham mumkin:

SQL · namuna baza

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_narxortacha_narx
8300010375

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:

mahsulotlarjami_donaortacha_narxeng_qimmat
85251037518000

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:

  1. COUNT(*) bilan jami mahsulotlar sonini oling;
  2. SUM, AVG, MIN, MAX ni bitta so’rovda birlashtiring;
  3. mijozlar da COUNT(*) va COUNT(yosh) ni solishtiring;
  4. WHERE turi = 'meva' qo’shib, faqat mevalar bo’yicha hisoblang;
  5. AVG(narx) natijasini ROUND(AVG(narx), 0) bilan yaxlitlang;
  6. Ikki agregatni bitta ifodada birlashtiring: MAX(narx) - MIN(narx) — eng qimmat va eng arzon mahsulot orasidagi farqni toping.

3-qadamdagi ikki son nega farq qiladi?

Qisqacha xulosa

  • Agregat funksiyalar ko’p qatordan bitta natija chiqaradi.
  • COUNT(*) — barcha qatorlar; COUNT(ustun) — NULL bo’lmaganlar.
  • SUM — yig’indi, AVG — o’rtacha, MIN/MAX — eng kichik/katta.
  • SUM, AVG, MIN, MAX NULL ni hisobga olmaydi.
  • GROUP BY bilan har guruh, WHERE bilan 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 darsda JOIN turlari — LEFT va RIGHT bilan mos kelmagan qatorlarni ham ko’rsatishni o’rganamiz. Shu yerdan O’rta daraja boshlanadi: ichki so’rovlar, CREATE TABLE va indekslar bilan chuqurroq ishlaymiz.

Bu dars foydali bo'ldimi?

—
— marta ko'rildi