SQL

SQL'dagi funksiya turlari

SQL'da funksiyalar ma'lumotlar ustida turli amallarni bajarish uchun ishlatiladi. Masalan, matnni katta yoki kichik harflarga o‘tkazish, sonlarni hisoblash, sanadan yilni ajratib olish yoki bir nechta qatorlardagi qiymatlarni qo‘shish mumkin.

image.png

Funksiyaning ishlash prinsipini juda sodda ko‘rinishda tasavvur qilish mumkin:

Input value → Funksiya → Output value

Ya’ni dastlabki qiymat funksiyaga beriladi va funksiya unga ma'lum bir amalni qo‘llab, natijaviy qiymatni qaytaradi.

Masalan:

'MARIA' → LOWER() → 'maria'

Bu yerda MARIA — dastlabki qiymat, LOWER() — funksiya, maria esa natijaviy qiymat.

SQL funksiyalarini ishlash usuliga ko‘ra ikki katta guruhga ajratib ko‘rish mumkin:

  1. Single-row funksiyalar

  2. Multi-row funksiyalar

1. Single-row funksiyalar

Single-row funksiyalar har bir qatorga alohida ishlov beradi. Ya'ni jadvaldagi har bir qator uchun funksiya alohida natija qaytaradi.

Masalan, quyidagi Employees jadvalimiz bor deb tasavvur qilamiz:

ID

Name

Salary

1

Maria

5000

2

John

6500

3

Alex

4500

Agar ismlarni kichik harflarga o‘tkazmoqchi bo‘lsak:

SELECT 
    Name,
    LOWER(Name) AS LowerName
FROM Employees;

Natija:

Name

LowerName

Maria

maria

John

john

Alex

alex

Bu yerda LOWER() har bir qatorga alohida ishladi.

Maria → LOWER() → maria
John  → LOWER() → john
Alex  → LOWER() → alex

Shuning uchun bu Single-row funksiya hisoblanadi.

Single-row funksiyalarning asosiy turlari

Ularni bir nechta kichik guruhlarga ajratish mumkin:

  • String funksiyalar

  • Sonli funksiyalar

  • Sana va vaqt funksiyalari

  • NULL bilan ishlovchi funksiyalar

  • Boshqa scalar funksiyalar

String funksiyalar

String funksiyalar matnlar bilan ishlash uchun xizmat qiladi.

Masalan, ismni katta harflarga o‘tkazish:

SELECT UPPER(Name) AS Name
FROM Employees;

Natija:

Name

MARIA

JOHN

ALEX

Matn uzunligini aniqlash:

SELECT 
    Name,
    LEN(Name) AS NameLength
FROM Employees;

Yoki ismning dastlabki uchta belgisini olish:

SELECT 
    Name,
    LEFT(Name, 3) AS ShortName
FROM Employees;

Masalan:

Maria → Mar
John  → Joh
Alex  → Ale

Bu funksiyalarning barchasi har bir qatorga alohida ishlov beradi.


Sonli funksiyalar

Sonlar bilan ishlashda ham Single-row funksiyalardan foydalanamiz.

Masalan, ROUND() sonni yaxlitlash uchun ishlatiladi:

SELECT ROUND(125.678, 2) AS Result;

Natija:

125.68

ABS() esa sonning modulini qaytaradi:

SELECT ABS(-150) AS Result;

Natija:

150

Bu funksiyalar ham berilgan qiymatga ishlov berib, bitta natija qaytaradi.


Sana va vaqt funksiyalari

SQL'da sana bilan ishlashda ham ko‘plab funksiyalar mavjud.

Masalan, bugungi sanani olish:

SELECT GETDATE() AS CurrentDate;

Sanadan yilni ajratib olish:

SELECT 
    GETDATE() AS CurrentDate,
    YEAR(GETDATE()) AS CurrentYear;

Agar sana:

2026-08-26

bo‘lsa:

YEAR() → 2026
MONTH() → 8
DAY() → 26

Bu yerda ham funksiya bitta qiymat ustida ishlamoqda.


2. Multi-row funksiyalar

Multi-row funksiyalar bir nechta qatorlardagi ma'lumotlardan foydalanib natija hosil qilishi mumkin.

Masalan, xodimlarning maoshlari:

Name

Salary

Maria

5000

John

6500

Alex

4500

David

7000

Agar barcha xodimlarning maoshlarini qo‘shmoqchi bo‘lsak:

SELECT SUM(Salary) AS TotalSalary
FROM Employees;

Natija:

23000

Bu yerda SUM() bitta qatorga emas, bir nechta qatorlardagi Salary qiymatlariga ishlov berdi:

5000
6500
4500
7000
   ↓
 SUM()
   ↓
23000

Shuning uchun SUM() — Multi-row funksiyaga misol.


Agregat funksiyalar

Multi-row funksiyalarning eng mashhur turi — agregat funksiyalar.

Ular bir nechta qatorlardagi ma'lumotlarni umumlashtirib, natija qaytaradi.

Eng ko‘p ishlatiladigan agregat funksiyalar:

Funksiya

Vazifasi

SUM()

Yig‘indini hisoblaydi

AVG()

O‘rtacha qiymatni hisoblaydi

MIN()

Eng kichik qiymatni topadi

MAX()

Eng katta qiymatni topadi

COUNT()

Qatorlar yoki qiymatlar sonini hisoblaydi

Masalan, o‘rtacha maosh:

SELECT AVG(Salary) AS AverageSalary
FROM Employees;

Eng katta maosh:

SELECT MAX(Salary) AS MaxSalary
FROM Employees;

Eng kichik maosh:

SELECT MIN(Salary) AS MinSalary
FROM Employees;

Xodimlar soni:

SELECT COUNT(*) AS EmployeeCount
FROM Employees;

GROUP BY bilan Multi-row funksiyalar

Agregat funksiyalarni GROUP BY bilan birgalikda ishlatish yanada qiziqarli.

Masalan, kompaniyada turli bo‘limlar mavjud:

Name

Department

Salary

Maria

IT

5000

John

IT

6500

Alex

HR

4500

David

HR

5500

Har bir bo‘limdagi jami maoshni hisoblaymiz:

SELECT 
    Department,
    SUM(Salary) AS TotalSalary
FROM Employees
GROUP BY Department;

Natija:

Department

TotalSalary

HR

10000

IT

11500

Bu yerda SUM() har bir bo‘lim ichidagi bir nechta qatorlarni umumlashtirmoqda.


Window funksiyalar — Multi-row funksiyalarning kuchli turi

SQL'da yana bir muhim tushuncha — Window funksiyalar.

Ular ham bir nechta qatorlardan foydalanadi, lekin agregat funksiyalardan muhim farqi bor: natijani har bir qator bilan birga saqlab qoladi.

Masalan:

SELECT 
    Name,
    Department,
    Salary,
    SUM(Salary) OVER(PARTITION BY Department) AS DepartmentTotal
FROM Employees;

Natija taxminan quyidagicha bo‘ladi:

Name

Department

Salary

DepartmentTotal

Maria

IT

5000

11500

John

IT

6500

11500

Alex

HR

4500

10000

David

HR

5500

10000

E'tibor bering: GROUP BY ishlatilganda har bir bo‘lim uchun bitta qator qolgan edi.

Window funksiyada esa asl qatorlar saqlanib qoladi va qo‘shimcha hisoblangan ustun paydo bo‘ladi.

Shu sababli window funksiyalar katta hajmdagi ma'lumotlarni tahlil qilishda juda foydali.


Agregat va Window funksiyalar o‘rtasidagi farq

Bu farqni eslab qolish uchun quyidagi misol juda qulay.

Agregat funksiya:

SELECT 
    Department,
    SUM(Salary) AS TotalSalary
FROM Employees
GROUP BY Department;

Natija: har bir bo‘lim uchun bitta qator.

Window funksiya:

SELECT 
    Name,
    Department,
    Salary,
    SUM(Salary) OVER(PARTITION BY Department) AS TotalSalary
FROM Employees;

Natija: barcha xodimlar qatorlari saqlanadi va har biriga bo‘limning jami maoshi ko‘rsatiladi.

Qisqacha:

GROUP BY + SUM()
       ↓
Qatorlarni guruhlab, umumlashtiradi

SUM() OVER()
       ↓
Qatorlarni saqlagan holda hisob-kitob qiladi

Funksiyalarni umumiy ko‘rinishda eslab qolamiz

SQL funksiyalarini quyidagicha tasavvur qilish mumkin:

                    SQL FUNKSIYALAR
                          │
              ┌───────────┴───────────┐
              │                       │
         SINGLE-ROW               MULTI-ROW
              │                       │
      ┌───────┼────────┐        ┌─────┴─────┐
      │       │        │        │           │
   String   Son     Sana     Agregat     Window
                              │           │
                         SUM, AVG,     SUM OVER,
                         MIN, MAX,     ROW_NUMBER,
                         COUNT         RANK ...

Muhim fikr

Single-row funksiyalar ma'lumotlarni bir qator bo‘yicha qayta ishlash, o‘zgartirish yoki tayyorlash uchun ishlatiladi.

Multi-row funksiyalar esa bir nechta qatorlardagi ma'lumotlarni umumlashtirish yoki ular o‘rtasidagi munosabatlarni tahlil qilish uchun ishlatiladi.

Shuning uchun SQL o‘rganishda funksiyalarni shunchaki alohida-alohida yodlab olishdan ko‘ra, ular qanday ma'lumotga va nechta qatorga ta'sir qilishini tushunish ancha muhim.

📌 Eslatma: Single-row va Multi-row atamalari ayrim SQL manbalarida ishlatiladi. SQL Server terminologiyasida esa ko‘pincha scalar functions, aggregate functions va window functions atamalari uchraydi. Muhimi — funksiyaning qanday ishlash prinsipini tushunish.

Ulashish:

🔎O'xshash maqolalar