Tarkibga o'tish

025. ENUM, UUID, range va composite turlar

Bu mavzuda PostgreSQL'ga xos ma'lumot turlari bo'yicha 21 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) ENUM turi yarating: holat_turi ('yangi','tayyor','yopiq'); qiymatlarini enum_range bilan chiqaring.

Kutilgan natija
{yangi,tayyor,yopiq}

2. (dokon, oson) ENUM ustunli jadval: 'ish' (id, holat holat_turi); ikki qator qo'shing va 'tayyor' sonini toping.

Kutilgan natija
1

3. (dokon, oson) gen_random_uuid() ning uzunligini (matn) chiqaring.

Kutilgan natija
36

4. (dokon, oson) Deterministik UUID: '550e8400-e29b-41d4-a716-446655440000'::uuid ni matnga qaytaring.

Kutilgan natija
550e8400-e29b-41d4-a716-446655440000

5. (dokon, o'rta) ENUM tartibi: ('yangi' < 'yopiq') solishtiring.

Kutilgan natija
t

6. (dokon, o'rta) daterange: [2024-01-01, 2024-02-01) oralig'ida 2024-01-15 borligini @> bilan tekshiring.

Kutilgan natija
t

7. (dokon, o'rta) Ikki oraliq kesishishi: int4range(1,10) && int4range(5,15).

Kutilgan natija
t

8. (dokon, o'rta) numrange chegaralari: numrange(1.5,4.5) ning lower va upper qiymatlari.

Kutilgan natija
1.5 | 4.5

9. (dokon, o'rta) Composite tur: 'manzil' (kocha text, uy int); qiymatdan uy raqamini (x).uy bilan chiqaring.

Kutilgan natija
12

10. (dokon, qiyin) Narx diapazoni: 'narx_oraliq' jadvali (id, oraliq int4range), EXCLUDE emas; 100 ni o'z ichiga olganlar soni.

Kutilgan natija
2

11. (dokon, qiyin) EXCLUDE USING gist: bir xonani bir vaqtga ikki marta band qilish mumkin emas; btree_gist kerak: 'band' jadvali (xona int, vaqt tsrange, EXCLUDE USING gist (xona WITH =, vaqt WITH &&)); jadvaldagi cheklov turi 'x'.

Kutilgan natija
x

12. (maktab, oson) ENUM: 'jins_turi' ('erkak','ayol') va qiymatlar soni (enum_range massiv uzunligi).

Kutilgan natija
2

13. (maktab, o'rta) Dars vaqti oralig'i: tsrange('2025-01-01 09:00','2025-01-01 10:30') davomiyligi (soat).

Kutilgan natija
1.5000000000000000

14. (maktab, qiyin) Ball oraliqlari bo'yicha baho toifalari: int4range [1,3) 'past', [3,5) 'o''rta', [5,6) 'yuqori'; baholarni mos toifaga joylab sonini chiqaring.

Kutilgan natija
o'rta | 60
past | 60
yuqori | 30

15. (bank, oson) Tranzaksiya turi uchun ENUM: 'trn_turi' ('kirim','chiqim','otkazma') va qiymatlar soni.

Kutilgan natija
3

16. (bank, o'rta) UUID kalit: 'hujjat' jadvali (id uuid DEFAULT gen_random_uuid() PRIMARY KEY, nom text); 2 qator qo'shib id uzunligi 36 ekanini tekshiring.

Kutilgan natija
2 | 36

17. (bank, o'rta) Qarz muddati oraliqlari: int4range(6,19) ichiga tushadigan (6<=muddat_oy<19) qarzlar sonini chiqaring.

Kutilgan natija
11

18. (bank, qiyin) Mijoz ma'lumotlari composite tur: 'shaxs' (ism text, yosh int); ROW dan ism ni ajrating va ro'yxatda 'Ali' ni tekshiring.

Kutilgan natija
Ali | 30

19. (kutubxona, oson) Kitob holati ENUM: 'kitob_holat' ('mavjud','ijarada','yoqolgan') — tartiblash: ENUM tartibi bo'yicha eng kattasi (max).

Kutilgan natija
yoqolgan

20. (kutubxona, o'rta) Ijara davri daterange: har bir qaytarilgan ijara uchun daterange(olingan, qaytarilgan) va 2024-02-01 ni o'z ichiga olgan ijaralar soni.

Kutilgan natija
2

21. (kutubxona, qiyin) Ijara oraliqlari kesishuvi: bir kitobning ikki xil ijarasi vaqt bo'yicha kesishgan juftliklar soni (a.id