11-dars. Shartli ifoda (CASE)

CASE nima?

CASE — SQL'dagi shartli ifoda bo'lib, dasturlashdagi IF...ELSE ga o'xshash vazifani bajaradi.

Masalan:

  • Ball 90 dan katta bo'lsa → A'lo

  • Ball 70–89 oralig'ida bo'lsa → Yaxshi

  • Ball 70 dan kichik bo'lsa → Qoniqarsiz

kabi holatlarda CASE ishlatiladi.


CASE yozilish tartibi

CASE
    WHEN shart THEN natija
    WHEN shart THEN natija
    ELSE natija
END

Qism

Vazifasi

CASE

Shartli ifodani boshlaydi

WHEN

Shart yoziladi

THEN

Shart bajarilganda chiqariladigan natija

ELSE

Hech bir shart bajarilmasa

END

CASE ni tugatadi


CASE turlari

CASE ikki xil usulda yoziladi.

Turi

Qachon ishlatiladi

Searched CASE

Shartlar (>, <, BETWEEN, LIKE) bilan ishlashda

Simple CASE

Aniq qiymatlarni almashtirishda


Searched CASE

Bu eng ko'p ishlatiladigan CASE turi.

SELECT
    FirstName,
    Score,
    CASE
        WHEN Score >= 80 THEN 'A''lo'
        WHEN Score >= 60 THEN 'Yaxshi'
        ELSE 'Qoniqarsiz'
    END AS Result
FROM Students

FirstName

Score

Result

Ali

95

A'lo

Vali

72

Yaxshi

Hasan

45

Qoniqarsiz


Simple CASE

Agar bitta ustunning qiymatini boshqa qiymatga almashtirish kerak bo'lsa, Simple CASE ishlatiladi.

SELECT
    FirstName,
    Gender,
    CASE Gender
        WHEN 'M' THEN 'Erkak'
        WHEN 'F' THEN 'Ayol'
        ELSE 'Noma''lum'
    END AS Gender_Name
FROM Employees

FirstName

Gender

Gender_Name

Ali

M

Erkak

Madina

F

Ayol


CASE ishlatishda muhim qoidalar

1. SQL shartlarni yuqoridan pastga tekshiradi.

CASE
    WHEN Score >= 90 THEN 'A'
    WHEN Score >= 70 THEN 'B'
    ELSE 'C'
END

Agar birinchi shart bajarilsa, qolgan shartlar tekshirilmaydi.


2. ELSE yozish tavsiya qilinadi.

CASE
    WHEN Score >= 60 THEN 'Pass'
    ELSE 'Fail'
END

Agar ELSE yozilmasa va hech qaysi shart bajarilmasa, natija NULL bo'ladi.


3. Shartlar bir-birini to'g'ri qamrab olishi kerak.

✅ To'g'ri

CASE
    WHEN Age < 18 THEN 'Minor'
    ELSE 'Adult'
END

❌ Noto'g'ri

CASE
    WHEN Age > 18 THEN 'Adult'
END

Bu yerda Age = 18 bo'lgan foydalanuvchilar uchun natija NULL bo'ladi.


4. THEN'dagi natijalar bir xil turdagi (datatype) bo'lishi kerak

CASE ichida qaytariladigan qiymatlar imkon qadar bir xil turdagi bo'lishi kerak.

✅ To'g'ri

Bu yerda barcha natijalar matn.

SELECT
    Sales,
    CASE
        WHEN Sales > 50 THEN 'Yuqori'
        WHEN Sales >= 20 THEN 'O''rtacha'
        ELSE 'Kam'
    END AS Category
FROM Sales.Orders

❌ Noto'g'ri

Bu yerda biri matn, biri son.

SELECT
    CASE
        WHEN Sales > 50 THEN 'Yuqori'
        ELSE 0
    END
FROM Sales.Orders

5. Bir nechta shart bo'lsa CASE ishlatish mantiqan to'g'ri

Agar faqat bitta shart bo'lsa, CASE yozish shart emas.

SELECT *
FROM Sales.Orders
WHERE Sales > 50

Bu yerda CASE kerak emas.


Eng muhim real misollar

Mijoz darajasini aniqlash

SELECT
    CustomerName,
    TotalSales,
    CASE
        WHEN TotalSales >= 10000 THEN 'VIP'
        WHEN TotalSales >= 5000 THEN 'Gold'
        ELSE 'Silver'
    END AS CustomerLevel
FROM Customers

Mahsulot narxini guruhlash

SELECT
    ProductName,
    Price,
    CASE
        WHEN Price >= 1000 THEN 'Qimmat'
        ELSE 'Arzon'
    END AS PriceCategory
FROM Products

Buyurtma holatini chiqarish

SELECT
    OrderID,
    CASE
        WHEN ShipDate IS NULL THEN 'Yetkazilmagan'
        ELSE 'Yetkazilgan'
    END AS Status
FROM Orders

CASE ni eslab qolish

Qism

Vazifasi

CASE

Boshlanishi

WHEN

Shart

THEN

Natija

ELSE

Qolgan holatlar

END

Tugashi


Darsga tegishli SQL fayllar

⬇️ Darsda ishlatilgan .sql fayli: 📎 dars_11.sql (1.0 KB)

⬇️ Uyga vazifa .sql fayli: 📎 dars_11_uy_ishi.sql (2.0 KB)

Ulashish:

🔎O'xshash maqolalar