Tarkibga o'tish

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.

Kutilgan natija
1
2
3
4
5
6
7
8
9
10

2. (dokon, oson) 1 dan 10 gacha sonlar yig'indisini rekursiv CTE bilan hisoblang (jami).

Kutilgan natija
55

3. (dokon, oson) 2 ning darajalarini 1 dan 1024 gacha chiqaring.

Kutilgan natija
1
2
4
8
16
32
64
128
256
512

4. (dokon, oson) 10 dan 1 gacha kamayuvchi sonlar ketma-ketligi.

Kutilgan natija
10
9
8
7
6
5
4
3
2
1

5. (f, oson) 5 faktorialini rekursiv CTE bilan hisoblang (f).

Kutilgan natija
120

6. (dokon, o'rta) Fibonachi sonlarining birinchi 10 tasi.

Kutilgan natija
1 | 0
2 | 1
3 | 1
4 | 2
5 | 3
6 | 5
7 | 8
8 | 13
9 | 21
10 | 34

7. (dokon, o'rta) 2024-01-01 dan 2024-01-10 gacha kunlar ro'yxati (rekursiv).

Kutilgan natija
2024-01-01
2024-01-02
2024-01-03
2024-01-04
2024-01-05
2024-01-06
2024-01-07
2024-01-08
2024-01-09
2024-01-10

8. (dokon, o'rta) 2024 yilning har oyi birinchi kunini rekursiv CTE bilan chiqaring.

Kutilgan natija
2024-01-01
2024-02-01
2024-03-01
2024-04-01
2024-05-01
2024-06-01
2024-07-01
2024-08-01
2024-09-01
2024-10-01

9. (dokon, o'rta) Buyurtmasiz kunlarni ham ko'rsatish: 2024-01-01..2024-01-31 har kun uchun buyurtmalar soni.

Kutilgan natija
2024-01-01 | 0
2024-01-02 | 0
2024-01-03 | 0
2024-01-04 | 0
2024-01-05 | 0
2024-01-06 | 1
2024-01-07 | 0
2024-01-08 | 0
2024-01-09 | 0
2024-01-10 | 0

10. (dokon, o'rta) Sonning raqamlari yig'indisi: 98765 uchun rekursiv CTE (yigindi).

Kutilgan natija
35

11. (dokon, o'rta) Evklid algoritmi: 48 va 18 ning EBUB (GCD) ini rekursiv CTE bilan toping.

Kutilgan natija
6

12. (dokon, o'rta) Xodimlar ierarxiyasi (VALUES): rahbardan quyi xodimlargacha, id=1 (direktor) ostidagi barcha xodimlar soni.

Kutilgan natija
6

13. (maktab, oson) 1 dan 5 gacha sonlar kvadratlari (rekursiv).

Kutilgan natija
1 | 1
2 | 4
3 | 9
4 | 16
5 | 25

14. (maktab, o'rta) Ierarxiya: xodim id=7 dan direktorgacha yo'l (id lar zanjiri).

Kutilgan natija
7 | 1
4 | 2
2 | 3
1 | 4

15. (maktab, o'rta) Daraxtda har bir xodimning chuqurligini (darajasini) hisoblang (direktor=0).

Kutilgan natija
1 | 0
2 | 1
3 | 1
4 | 2
5 | 2
6 | 2
7 | 3

16. (maktab, o'rta) Ierarxiya yo'li matn sifatida: '1>2>4>7' (har bir xodim uchun yo'l).

Kutilgan natija
1 | 1
2 | 1>2
4 | 1>2>4
7 | 1>2>4>7
5 | 1>2>5
3 | 1>3
6 | 1>3>6

17. (maktab, o'rta) 1 dan 20 gacha tub sonlarni rekursiv CTE va NOT EXISTS yordamida toping.

Kutilgan natija
2
3
5
7
11
13
17
19

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.

Kutilgan natija
0 | 8000000
1 | 7333333
2 | 6666667

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).

Kutilgan natija
0 | 1000000
1 | 1020000
2 | 1040400
3 | 1061208
4 | 1082432
5 | 1104081

20. (bank, qiyin) Aholi soni yiliga 10% ga ortsa, u 2 baravar bo'lishi uchun nechta yil kerak (rekursiv CTE).

Kutilgan natija
8

21. (bank, qiyin) Tranzaksiya sanalarining har kuni (birinchi 10 kun) uchun kumulyativ tranzaksiya sonini rekursiv kalendar bilan chiqaring.

Kutilgan natija
2024-01-02 | 2
2024-01-03 | 3
2024-01-04 | 5
2024-01-05 | 6
2024-01-06 | 7
2024-01-07 | 9
2024-01-08 | 10
2024-01-09 | 12
2024-01-10 | 13
2024-01-11 | 14

22. (kutubxona, oson) 1 dan 7 gacha haftaning kunlari uchun 2024-01-01 dan boshlab sana va kun nomi (Dy).

Kutilgan natija
2024-01-01 | Mon
2024-01-02 | Tue
2024-01-03 | Wed
2024-01-04 | Thu
2024-01-05 | Fri
2024-01-06 | Sat
2024-01-07 | Sun

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.

Kutilgan natija
1 | 1
1 | 2
2 | 1
2 | 2
2 | 3
3 | 1
3 | 2
3 | 3

24. (kutubxona, qiyin) Ierarxiya (kategoriyalar daraxti, VALUES): 'Fan'>'Matematika'>'Algebra', 'Fan'>'Fizika', 'Adabiyot' — har bir tugun to'liq yo'li bilan.

Kutilgan natija
Adabiyot
Fan
Fan/Fizika
Fan/Matematika
Fan/Matematika/Algebra

25. (kutubxona, qiyin) Rekursiv CTE bilan Collatz ketma-ketligi uzunligi: 6 dan boshlab 1 gacha (qadamlar soni).

Kutilgan natija
8