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).
  • ENDCASE ni yopadi; AS toifa — natija ustuniga nom beradi.

Amaliy mashq

Shartli ustun yarating:

  1. CASE bilan narxga qarab ‘arzon’/‘o’rtacha’/‘qimmat’ toifasini bering;
  2. natijani shu yangi ustun bo’yicha tartiblang;
  3. ELSE ni olib tashlang — mos kelmagan qatorlarda nima chiqdi?
  4. soni = 0 bo’lsa ‘tugagan’, aks holda ‘bor’ deb yozing;
  5. CASE ni COUNT bilan 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’ning ifi).
  • WHEN shart THEN qiymat — mos kelsa shu qiymat; ELSE — qolgan hollarga.
  • Shartlar yuqoridan pastga tekshiriladi, birinchi mosi ishlaydi.
  • END bilan yopiladi, AS bilan natija ustuniga nom beriladi.
  • Ko’pincha qiymatlarni toifaga ajratish uchun ishlatiladi.

Keyingi darsda normalizatsiya — ma’lumotni takrorsiz, tartibli jadvallarga bo’lish tamoyilini ko’ramiz.

Bu dars foydali bo'ldimi?

marta ko'rildi