008. Sana va vaqt
Bu mavzuda EXTRACT, DATE_TRUNC, AGE, INTERVAL va TO_CHAR bo'yicha 44 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) 2024-03-15 sanasining yilini, oyini va kunini EXTRACT bilan chiqaring (y,o,k).
2. (dokon, oson) Buyurtmalar yillik taqsimoti: yil bo'yicha buyurtmalar soni (yil, soni).
3. (sana, oson) 2024-03-01 ga 30 kun qo'shing (sana).
4. (dokon, oson) 2024-12-25 va 2024-01-01 orasidagi kunlar farqini chiqaring (kun).
5. (sana, oson) 2024-01-31 ga 1 oy qo'shing (INTERVAL) (sana).
6. (dokon, oson) 2024-05-17 sanasi haftaning qaysi kuni (0=yakshanba) ekanini DOW bilan chiqaring.
7. (dokon, oson) Buyurtmalarning oy bo'yicha sonini chiqaring (oy raqami, soni).
8. (dokon, o'rta) DATE_TRUNC yordamida buyurtmalar sonini oylar bo'yicha chiqaring (oy_boshi, soni).
Kutilgan natija
9. (dokon, o'rta) Mijozlarni ro'yxatdan o'tgan yil bo'yicha sanang (yil, soni).
10. (muddat, o'rta) Har bir buyurtma sanasidan 14 kun keyingi sanani (muddat) chiqaring (birinchi 5).
11. (dokon, o'rta) Buyurtma sanasini 'DD.MM.YYYY' formatida TO_CHAR bilan chiqaring (birinchi 5).
12. (dokon, o'rta) Oxirgi buyurtma va birinchi buyurtma orasidagi kunlar sonini chiqaring.
13. (dokon, o'rta) Dushanba kuni berilgan buyurtmalar sonini chiqaring (ISODOW=1).
14. (dokon, o'rta) 2024-02 oyidagi kunlar sonini chiqaring (oy oxiri - oy boshi).
15. (dokon, o'rta) Har bir buyurtma uchun chorak raqamini (EXTRACT quarter) chiqaring va choraklar bo'yicha sonini ko'rsating.
16. (maktab, oson) O'quvchilarning tug'ilgan yilini chiqaring (yil bo'yicha soni).
17. (maktab, oson) Baholar qo'yilgan oylar bo'yicha soni (oy, soni).
18. (maktab, oson) O'qituvchining ish boshlagan yilini chiqaring (ism, yil).
Kutilgan natija
19. (maktab, o'rta) O'qituvchilarning 2025-01-01 holatiga ish staji (to'liq yillarda) ni AGE bilan chiqaring.
Kutilgan natija
20. (maktab, o'rta) O'quvchilarning 2025-01-01 holatiga yoshini (to'liq yil) chiqaring (birinchi 5).
Kutilgan natija
21. (maktab, o'rta) Shanba-yakshanba kuni kiritilgan baholar sonini chiqaring.
22. (maktab, o'rta) Davomat yozuvlarini hafta (ISO haftasi) bo'yicha sanang (hafta, soni).
23. (maktab, o'rta) 2024-09-01 dan boshlab har baho sanasigacha o'tgan kunlar sonini chiqaring (birinchi 5 baho).
24. (bank, oson) Tranzaksiyalar yil-oy bo'yicha sonini TO_CHAR(sana,'YYYY-MM') bilan chiqaring.
25. (bank, oson) Hisoblar ochilgan yillar bo'yicha sonini chiqaring.
26. (bank, o'rta) Tranzaksiyalarning soat bo'yicha taqsimoti (soat, soni).
27. (bank, o'rta) Tranzaksiya sanasini faqat sana (::date) ga o'tkazib, kunlik jami summani chiqaring (birinchi 5 kun).
Kutilgan natija
28. (bank, o'rta) Mijozlarning 2025-01-01 holatiga yoshini chiqaring va 60 dan oshganlar sonini hisoblang.
29. (bank, o'rta) Tranzaksiya sanasidan 3 soat keyingi vaqtni chiqaring (birinchi 3).
30. (bank, o'rta) Birinchi va oxirgi tranzaksiya orasidagi vaqt farqini kunlarda (butun) chiqaring.
31. (bank, o'rta) Hisob ochilganiga 2025-01-01 holatida necha oy bo'lganini (oy hisobida) chiqaring (birinchi 5).
32. (kutubxona, oson) Ijaralarni olingan oy bo'yicha sanang.
33. (kutubxona, oson) A'zolar ro'yxatdan o'tgan yil bo'yicha soni.
34. (kutubxona, o'rta) Qaytarilgan ijaralar uchun ushlab turish kunlari o'rtachasini (1 xona) chiqaring.
35. (kutubxona, o'rta) 14 kundan ortiq ushlab turilgan ijaralar sonini chiqaring.
36. (kutubxona, o'rta) Ijaraning qaytarish muddati: olingan+14. Muddatidan keyin qaytarilgan ijaralar id sini chiqaring.
37. (kutubxona, o'rta) Har bir yil-chorak uchun ijaralar soni (TO_CHAR 'YYYY-"Q"Q').
38. (kutubxona, o'rta) Ijara olingan oy nomi (TO_CHAR 'Month') va soni bo'yicha chiqaring, oy raqami tartibida.
Kutilgan natija
39. (kutubxona, qiyin) Har bir a'zo ro'yxatdan o'tgan sanadan keyin birinchi ijarasigacha necha kun o'tganini (a'zo id, kun) chiqaring; ijarasi yo'qlar chiqarilmasin.
40. (dokon, qiyin) Har bir oyning oxirgi kunini (DATE_TRUNC + interval) buyurtma oylari uchun chiqaring (oy_oxiri, soni).
Kutilgan natija
41. (dokon, qiyin) Buyurtmalar orasidagi eng katta bo'shliqni (ketma-ket sanalar farqi) LAG yordamida kunlarda chiqaring.
42. (maktab, qiyin) Hafta kunlari bo'yicha (1=dushanba..7=yakshanba) davomatda 'kelmadi' lar sonini chiqaring.
43. (bank, qiyin) Har bir mijoz uchun birinchi hisob ochilgan sana va oxirgisi orasidagi kunlar farqini chiqaring (faqat 2 va undan ko'p hisobi borlar).
Kutilgan natija
44. (bank, qiyin) generate_series bilan 2024-01-01 dan 2024-01-07 gacha barcha kunlarni va hafta kun nomini (TO_CHAR 'Dy') chiqaring.