12-dars. Agregat funksiyalar (COUNT, SUM, AVG, MIN, MAX)

Aggregate Functions — jadvaldagi bir nechta qatorlar ustida hisob-kitob qilib, bitta natija qaytaradigan funksiyalar.

Masalan, kompaniyada 100 ta order bo'lsa, quyidagi savollarga javob topishimiz mumkin:

  • Jami nechta order bor?

  • Jami savdo qancha?

  • O'rtacha order qancha?

  • Eng katta order qancha?

  • Eng kichik order qancha?

Bunday vazifalarda Agregat funksiyalar ishlatiladi.


Agregat funksiyalar

Biz bu darsda 5 ta asosiy Agregat funksiyalarni o'rganamiz:

Funksiya

Vazifasi

COUNT()

Sanaydi

SUM()

Yig'indini hisoblaydi

AVG()

O'rtacha qiymatni hisoblaydi

MAX()

Eng katta qiymatni topadi

MIN()

Eng kichik qiymatni topadi


COUNT()

COUNT() — qatorlar yoki qiymatlar sonini hisoblaydi.

Masalan:

Bizda nechta order bor?

SELECT 
   COUNT(*) AS Order_Count
FROM Orders;

Order_Count

15

COUNT(*) nima degani?

* bu yerda barcha qatorlarni hisobla degan ma'noni anglatadi.


COUNT(column)

COUNT() ichida ma'lum bir ustunni ham ko'rsatish mumkin.

SELECT
    COUNT(CustomerName) AS Customer_Count
FROM Orders;

Bu CustomerName ustunidagi NULL bo'lmagan qiymatlarni sanaydi.

Shuning uchun:

COUNT(*) → qatorlarni sanaydi

COUNT(column) → column'dagi NULL bo'lmagan qiymatlarni sanaydi

Bu NULL mavzusida o'rganganlarimiz bilan ham bog'lanadi.


SUM()

SUM() — sonli ustundagi qiymatlarning yig'indisini hisoblaydi.

Masalan:

Barcha orderlarning jami savdosi qancha?

SELECT
    SUM(Sales) AS Total_Sales
FROM Orders;

Bizning datasetimizda:

1200 + 800 + 450 + ... + 350

Total_Sales

13860


AVG()

AVG() — sonli qiymatlarning o'rtachasini hisoblaydi.

Masalan:

Bitta orderning o'rtacha savdo qiymati qancha?

SELECT
    AVG(Sales) AS Average_Sales
FROM Orders;

Average_Sales

924


MAX()

MAX() — eng katta qiymatni topadi.

Eng katta order qancha?

SELECT
    MAX(Sales) AS Max_Sales
FROM Orders;

Max_Sales

1600


MIN()

MIN() — eng kichik qiymatni topadi.

Eng kichik order qancha?

SELECT
    MIN(Sales) AS Min_Sales
FROM Orders;

Min_Sales

350


Barcha agregat funksiyalar birgalikda

Endi bitta query orqali umumiy hisobot olamiz:

SELECT
    COUNT(*) AS Order_Count,
    SUM(Sales) AS Total_Sales,
    AVG(Sales) AS Average_Sales,
    MAX(Sales) AS Max_Sales,
    MIN(Sales) AS Min_Sales
FROM Orders;

Natija:

Order_Count

Total_Sales

Average_Sales

Max_Sales

Min_Sales

15

13860

924

1600

350

Bu yerda barcha orderlar bitta guruh sifatida hisoblandi.


GROUP BY

Endi darsning muhim qismiga o'tamiz.

GROUP BY — ma'lumotlarni ma'lum bir ustun bo'yicha guruhlarga ajratish uchun ishlatiladi.

Masalan, biz:

Barcha orderlar soni nechta?

deb so'rasak:

SELECT COUNT(*)
FROM Orders;

Natija:

15

Lekin:

Har bir davlat bo'yicha nechta order bor?

desak, ma'lumotni Country bo'yicha guruhlashimiz kerak.

Buning uchun GROUP BY ishlatiladi.


GROUP BY + COUNT()

SELECT
    Country,
    COUNT(*) AS Order_Count
FROM Orders
GROUP BY Country;

Country

Order_Count

Germany

4

USA

5

Uzbekistan

6

Bu query qanday ishladi?

SQL ma'lumotlarni:

Germany
USA
Uzbekistan

guruhlariga ajratdi. Keyin har bir guruhdagi orderlarni sanadi.


GROUP BY + SUM()

Endi:

Har bir davlat bo'yicha jami savdo qancha?

SELECT
    Country,
    SUM(Sales) AS Total_Sales
FROM Orders
GROUP BY Country;

Country

Total_Sales

Germany

4300

USA

4100

Uzbekistan

5460

Bu yerda SUM() hisoblayapti, GROUP BY esa qaysi guruhlar uchun alohida hisoblashni belgilayapti.


GROUP BY + AVG()

Har bir davlat bo'yicha o'rtacha order qancha?

SELECT
    Country,
    AVG(Sales) AS Average_Sales
FROM Orders
GROUP BY Country;

Country

Average_Sales

Germany

1075

USA

820

Uzbekistan

910


GROUP BY + MAX()

Har bir davlatdagi eng katta order qancha?

SELECT
    Country,
    MAX(Sales) AS Max_Sales
FROM Orders
GROUP BY Country;

Country

Max_Sales

Germany

1600

USA

1500

Uzbekistan

1200


GROUP BY + MIN()

Har bir davlatdagi eng kichik order qancha?

SELECT
    Country,
    MIN(Sales) AS Min_Sales
FROM Orders
GROUP BY Country;

Country

Min_Sales

Germany

500

USA

400

Uzbekistan

350


Funksiyalarni eslab qolish

Funksiya

Oson savol bilan

COUNT()

Nechta?

SUM()

Jami qancha?

AVG()

O'rtacha qancha?

MAX()

Eng kattasi qancha?

MIN()

Eng kichigi qancha?

GROUP BY

"Har bir ... bo'yicha" degan savol bo'lsa:

GROUP BY


Darsga tegishli SQL fayllar

⬇️ Darsda ishlatilgan .sql fayli: 📎 dars_12.sql (2.7 KB)

⬇️ Uyga vazifa .sql fayli: 📎 dars_12_uy_ishi.sql (4.3 KB)

Ulashish:

🔎O'xshash maqolalar