016. Rekursiv CTE
Bu mavzuda WITH RECURSIVE: ketma-ketlik, kalendar va ierarxiya bo'yicha 25 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) Rekursiv CTE bilan 1 dan 10 gacha sonlarni chiqaring.
2. (dokon, oson) 1 dan 10 gacha sonlar yig'indisini rekursiv CTE bilan hisoblang (jami).
3. (dokon, oson) 2 ning darajalarini 1 dan 1024 gacha chiqaring.
4. (dokon, oson) 10 dan 1 gacha kamayuvchi sonlar ketma-ketligi.
5. (f, oson) 5 faktorialini rekursiv CTE bilan hisoblang (f).
6. (dokon, o'rta) Fibonachi sonlarining birinchi 10 tasi.
7. (dokon, o'rta) 2024-01-01 dan 2024-01-10 gacha kunlar ro'yxati (rekursiv).
Kutilgan natija
8. (dokon, o'rta) 2024 yilning har oyi birinchi kunini rekursiv CTE bilan chiqaring.
Kutilgan natija
9. (dokon, o'rta) Buyurtmasiz kunlarni ham ko'rsatish: 2024-01-01..2024-01-31 har kun uchun buyurtmalar soni.
Kutilgan natija
10. (dokon, o'rta) Sonning raqamlari yig'indisi: 98765 uchun rekursiv CTE (yigindi).
11. (dokon, o'rta) Evklid algoritmi: 48 va 18 ning EBUB (GCD) ini rekursiv CTE bilan toping.
12. (dokon, o'rta) Xodimlar ierarxiyasi (VALUES): rahbardan quyi xodimlargacha, id=1 (direktor) ostidagi barcha xodimlar soni.
13. (maktab, oson) 1 dan 5 gacha sonlar kvadratlari (rekursiv).
14. (maktab, o'rta) Ierarxiya: xodim id=7 dan direktorgacha yo'l (id lar zanjiri).
15. (maktab, o'rta) Daraxtda har bir xodimning chuqurligini (darajasini) hisoblang (direktor=0).
16. (maktab, o'rta) Ierarxiya yo'li matn sifatida: '1>2>4>7' (har bir xodim uchun yo'l).
17. (maktab, o'rta) 1 dan 20 gacha tub sonlarni rekursiv CTE va NOT EXISTS yordamida toping.
18. (bank, o'rta) Qarzning to'lov jadvali: 1-qarz (summa, oy soni) bo'yicha har oy qoldiq (oddiy: summa/muddat kamayib borishi), birinchi 3 oy.
19. (bank, o'rta) O'sish: shaharda 1 000 000 kishi bor, aholi yiliga 2% ga ortadi. 5 yil davomida yil bo'yicha aholi sonini chiqaring (yil, aholi, butun songa yaxlitlang).
20. (bank, qiyin) Aholi soni yiliga 10% ga ortsa, u 2 baravar bo'lishi uchun nechta yil kerak (rekursiv CTE).
21. (bank, qiyin) Tranzaksiya sanalarining har kuni (birinchi 10 kun) uchun kumulyativ tranzaksiya sonini rekursiv kalendar bilan chiqaring.
Kutilgan natija
22. (kutubxona, oson) 1 dan 7 gacha haftaning kunlari uchun 2024-01-01 dan boshlab sana va kun nomi (Dy).
Kutilgan natija
23. (kutubxona, o'rta) Kitob nusxalari soni 1 dan 5 gacha kitoblar uchun har bir nusxa qatorini (kitob_id, nusxa_raqami) rekursiv ravishda chiqaring: kitob 1..3, birinchi 8 qator.
24. (kutubxona, qiyin) Ierarxiya (kategoriyalar daraxti, VALUES): 'Fan'>'Matematika'>'Algebra', 'Fan'>'Fizika', 'Adabiyot' — har bir tugun to'liq yo'li bilan.
25. (kutubxona, qiyin) Rekursiv CTE bilan Collatz ketma-ketligi uzunligi: 6 dan boshlab 1 gacha (qadamlar soni).