009. CASE ifodasi
Bu mavzuda shartli ifodalar va shartli agregatlar bo'yicha 24 ta masala bor. Har bir masala oldida qavs ichida sxema nomi va qiyinlik darajasi ko'rsatilgan. Sxemalar Sxemalar va tayyorlov sahifasida berilgan.
Masalani o'zingiz yechib, natijani Kutilgan natija bilan solishtiring. O'zgartiruvchi masalalarda (INSERT, UPDATE, DELETE, DDL) natija shartda aytilgan tekshiruv so'rovidan olingan. Natija 10 qatordan ko'p bo'lsa, birinchi 10 qator ko'rsatilgan.
1. (dokon, oson) Mahsulotlarni narxi bo'yicha 'arzon' (<100000), 'o''rta' (<500000), 'qimmat' (qolgani) deb tasniflang (id, toifa).
Kutilgan natija
2. (dokon, oson) Qoldig'i 0 bo'lsa 'tugagan', 10 dan kam bo'lsa 'oz', aks holda 'yetarli' deb belgilang (id, holat).
Kutilgan natija
3. (dokon, oson) Buyurtma holatini o'zbekchadan: 'yangi'->'Yangi', 'yetkazildi'->'Tugagan', 'bekor'->'Bekor' (CASE holat WHEN ...), id va nom.
Kutilgan natija
4. (dokon, o'rta) Toshkentlik mijozlar sonini va boshqa shaharlik mijozlar sonini bitta qatorda (toshkent,boshqa) chiqaring.
5. (dokon, o'rta) Har bir to'lov usuli bo'yicha summalarni ustunlarga ajrating (naqd,karta,click), SUM(CASE...) bilan.
6. (dokon, o'rta) Mijozni tug'ilgan yiliga ko'ra avlodga ajrating: <1985 'katta', <2000 'yosh', boshqa 'yangi' va avlodlar sonini chiqaring.
7. (dokon, o'rta) CASE bilan tartiblash: avval 'yangi' keyin 'yetkazildi' keyin 'bekor' buyurtmalar (id, holat), birinchi 8 ta.
Kutilgan natija
8. (maktab, oson) Baholarni so'z bilan belgilang: 5 'a''lo', 4 'yaxshi', 3 'qoniqarli', qolgani 'yomon' (id, so'z), birinchi 10.
Kutilgan natija
9. (maktab, oson) O'quvchi jinsini 'E'->'o''g''il', 'A'->'qiz' ko'rinishida chiqaring (birinchi 6).
Kutilgan natija
10. (maktab, o'rta) Har bir fan bo'yicha 5 va 4 olinganlar sonini ustunlarga (besh,tort) ajrating.
11. (maktab, o'rta) Davomat: 'keldi'=1, boshqasi 0 bo'lgan ustun bilan o'quvchi bo'yicha qatnashish ulushini (%) chiqaring (birinchi 5 o'quvchi).
12. (maktab, o'rta) O'qituvchilarni maosh bo'yicha: <4000000 'past', <5500000 'o''rta', qolgani 'yuqori' deb sanang.
13. (bank, oson) Hisob balansini 'manfiy', 'nol', 'musbat' deb tasniflang va sonini hisoblang.
14. (bank, oson) Tranzaksiya turini: 'kirim' bo'lsa +summa, aks holda -summa (imzoli) deb chiqaring, birinchi 6.
Kutilgan natija
15. (bank, o'rta) Qarz xavfini baholang: 'kechikkan' -> 'yuqori', muddat_oy>=24 -> 'o''rta', qolgani 'past' (id, xavf).
Kutilgan natija
16. (bank, o'rta) Balans (hisob) bo'yicha: kirim summalari va chiqim summalarini ustunlar sifatida chiqaring (hisob_id, kirim, chiqim), birinchi 5.
Kutilgan natija
17. (bank, o'rta) Mijozlarni yosh guruhlariga bo'ling (2025-01-01 holatida): <40, 40-59, 60+ va soni.
18. (kutubxona, oson) Kitobni yoshi bo'yicha: yil<1980 'eski', yil<2010 'o''rta', boshqasi 'yangi' (id, toifa), birinchi 8.
19. (kutubxona, oson) Ijara qaytarilgan bo'lsa 'qaytarilgan', aks holda 'ijarada' deb belgilang va sonini hisoblang.
20. (kutubxona, o'rta) Mualliflarni davlati bo'yicha 'mahalliy' (Ozbekiston) va 'xorijiy' ga ajratib sanang.
21. (kutubxona, o'rta) Ijaralarni muddati: <=7 kun 'tez', <=14 'oddiy', >14 'uzoq', qaytarilmagan 'ochiq'; toifa bo'yicha soni.
22. (kutubxona, qiyin) Har bir janr uchun kitoblar sonini yangi (>=2000) va eski (<2000) ustunlarga ajrating (janr_id, yangi, eski).
23. (dokon, qiyin) Har bir shahar bo'yicha mijozlarni emaili borligiga qarab ('bor'/'yoq') ustunlarga ajratib sanang (shahar, bor, yoq).
Kutilgan natija
24. (bank, qiyin) Mijoz jami balansiga qarab daraja bering: >50 mln 'VIP', >20 mln 'oltin', qolgani 'oddiy' (mijoz_id, daraja), hisobi borlar, birinchi 8.