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:

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_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:

  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.

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 bosqichda O’rta darajaJOIN turlari (LEFT, RIGHT), ichki so’rovlar (subquery), CREATE TABLE va indekslar bilan chuqurroq ishlaymiz.

Bu dars foydali bo'ldimi?

marta ko'rildi