SQL CASE — shartli ifoda
Ba’zan so’rov natijasida qiymatga qarab turli javob ko’rsatish kerak
bo’ladi: narx kichik bo’lsa “arzon”, katta bo’lsa “qimmat”. Bu — dasturlashdagi
if/else ga o’xshaydi, faqat SQL ichida. Buning
uchun CASE ishlatiladi.
CASE tuzilishi
CASE shartlarni ketma-ket tekshiradi va birinchi mos kelganining qiymatini
qaytaradi:
SELECT nom, narx,
CASE
WHEN narx < 5000 THEN 'arzon'
WHEN narx < 15000 THEN 'o''rtacha'
ELSE 'qimmat'
END AS toifa
FROM mahsulotlar;
O’zingiz ishga tushirib ko’ring — so’rovni tahrirlashingiz ham mumkin:
SQL · namuna baza
Natija — har mahsulotga narx toifasi qo’shildi:
| nom | narx | toifa |
|---|---|---|
| Olma | 8000 | o’rtacha |
| Non | 3000 | arzon |
| Sut | 12000 | o’rtacha |
| Choy | 15000 | qimmat |
| Banan | 14000 | o’rtacha |
| Qatiq | 9000 | o’rtacha |
| Suv | 4000 | arzon |
| Guruch | 18000 | qimmat |
Tuzilishi:
WHEN shart THEN qiymat— shart bajarilsa, shu qiymat.ELSE qiymat— hech bir shart bajarilmasa (ixtiyoriy).END—CASEni yopadi;AS toifa— natija ustuniga nom beradi.
Amaliy mashq
Shartli ustun yarating:
CASEbilan narxga qarab ‘arzon’/‘o’rtacha’/‘qimmat’ toifasini bering;- natijani shu yangi ustun bo’yicha tartiblang;
ELSEni olib tashlang — mos kelmagan qatorlarda nima chiqdi?soni = 0bo’lsa ‘tugagan’, aks holda ‘bor’ deb yozing;CASEniCOUNTbilan birga ishlatib, har toifada nechtadan borligini sanang.
3-qadamda ELSE siz qolgan kataklar qanday to’ldi?
Qisqacha xulosa
CASE— so’rov ichida shartga qarab turli qiymat qaytaradi (SQL’ningifi).WHEN shart THEN qiymat— mos kelsa shu qiymat;ELSE— qolgan hollarga.- Shartlar yuqoridan pastga tekshiriladi, birinchi mosi ishlaydi.
ENDbilan yopiladi,ASbilan natija ustuniga nom beriladi.- Ko’pincha qiymatlarni toifaga ajratish uchun ishlatiladi.
Keyingi darsda normalizatsiya — ma’lumotni takrorsiz, tartibli jadvallarga bo’lish tamoyilini ko’ramiz.