Shartli CASE ifodasi
Kirish: Ushbu qo'llanmada siz PostgreSQL CASE ifodasi yordamida SQL so'rovlarida shartli mantiqni (if-else kabi) amalga oshirishni o'rganasiz.
PostgreSQLda CASE ifodasi dasturlash tillaridagi if-else yoki switch-case operatorlariga o'xshash kuchli vosita bo'lib, so'rov ichida turli shartlar asosida har xil natijalarni qaytarish imkonini beradi.
CASE ifodasining umumiy sintaksisi:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN condition3 THEN result3
...
ELSE result
END
Ushbu sintaksisda:
condition — bu mantiqiy ifoda (true yoki false). PostgreSQL shartlarni yuqoridan pastga qarab ketma-ket tekshiradi.true bo'lgan shartning THEN qismidagi natija qaytariladi va keyingi shartlar tekshirilmaydi.true bo'lmasa, ELSE qismidagi natija qaytariladi. Agar ELSE ko'rsatilmagan bo'lsa, NULL qaytadi.CASE ifodasini SELECT, WHERE, ORDER BY va GROUP BY kabi ifoda ishlatish mumkin bo'lgan har qanday joyda qo'llash mumkin.
Har bir tovarning ombordagi umumiy sonini va unga mos zaxira darajasini (Low, Medium, High) aniqlaymiz:
SELECT
product_name,
SUM(quantity) AS total_quantity,
CASE
WHEN SUM(quantity) <= 120 THEN 'Low'
WHEN SUM(quantity) > 120 AND SUM(quantity) <= 150 THEN 'Medium'
WHEN SUM(quantity) > 150 THEN 'High'
END AS inventory_level
FROM
inventories
JOIN products USING (product_id)
GROUP BY
product_name
ORDER BY
total_quantity;
Natija:
product_name | total_quantity | inventory_level
----------------------------+----------------+-----------------
Samsung Galaxy Z Fold 5 | 110 | Low
Xiaomi Mi 14 | 120 | Low
Sony Xperia 1 VI | 130 | Medium
Apple iPhone 15 Pro Max | 140 | Medium
Apple iPhone 15 | 150 | Medium
Samsung Galaxy Tab S9 | 160 | High
Apple iPad Pro 12.9 | 170 | High
Apple AirPods Pro 3 | 180 | High
Samsung Galaxy Buds Pro 2 | 190 | High
Mantiq:
'Low' (kam).'Medium' (o'rtacha).'High' (ko'p).Agar bitta aniq ustun yoki ifoda qiymatlarini solishtirmoqchi bo'lsangiz, qisqartirilgan oddiy CASE sintaksisidan foydalanishingiz mumkin:
CASE expression
WHEN value1 THEN result1
WHEN value2 THEN result2
WHEN value3 THEN result3
...
ELSE result
END
Masalan, tranzaksiya turini yanada tushunarli matnga aylantirish:
SELECT
transaction_id,
type,
CASE type
WHEN 'issue' THEN 'Tovarni chiqarish'
WHEN 'receipt' THEN 'Tovarni qabul qilish'
ELSE 'Boshqa'
END AS transaction_type
FROM
transactions;
Natija:
transaction_id | type | transaction_type
----------------+---------+----------------------
1 | issue | Tovarni chiqarish
2 | issue | Tovarni chiqarish
3 | issue | Tovarni chiqarish
4 | receipt | Tovarni qabul qilish
5 | receipt | Tovarni qabul qilish
CASE ifodasidan foydalaning.CASE WHEN ... THEN ... END, bitta ustun qiymatini taqqoslash uchun esa oddiy CASE expression WHEN value THEN ... END sintaksisi ishlatiladi.ELSE berilmagan bo'lsa, CASE ifodasi NULL qaytaradi.