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
ENDQism | 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 ( |
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 StudentsFirstName | 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 EmployeesFirstName | 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'
ENDAgar birinchi shart bajarilsa, qolgan shartlar tekshirilmaydi.
2. ELSE yozish tavsiya qilinadi.
CASE
WHEN Score >= 60 THEN 'Pass'
ELSE 'Fail'
ENDAgar 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'
ENDBu 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.Orders5. 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 > 50Bu 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 CustomersMahsulot narxini guruhlash
SELECT
ProductName,
Price,
CASE
WHEN Price >= 1000 THEN 'Qimmat'
ELSE 'Arzon'
END AS PriceCategory
FROM ProductsBuyurtma holatini chiqarish
SELECT
OrderID,
CASE
WHEN ShipDate IS NULL THEN 'Yetkazilmagan'
ELSE 'Yetkazilgan'
END AS Status
FROM OrdersCASE 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)


