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.

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:
Single-row funksiyalar
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() → alexShuning 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 → AleBu 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.68ABS() esa sonning modulini qaytaradi:
SELECT ABS(-150) AS Result;Natija:
150Bu 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-26bo‘lsa:
YEAR() → 2026
MONTH() → 8
DAY() → 26Bu 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:
23000Bu yerda SUM() bitta qatorga emas, bir nechta qatorlardagi Salary qiymatlariga ishlov berdi:
5000
6500
4500
7000
↓
SUM()
↓
23000Shuning 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 |
|---|---|
| Yig‘indini hisoblaydi |
| O‘rtacha qiymatni hisoblaydi |
| Eng kichik qiymatni topadi |
| Eng katta qiymatni topadi |
| 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 qiladiFunksiyalarni 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.
