Tarkibga o'tish

023. JSON va JSONB

Bu mavzuda operatorlar, agregatlar va yo'l so'rovlari bo'yicha 41 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) '{"ism":"Ali","yosh":25}' JSONB dan 'ism' maydonini -> operatori bilan chiqaring.

Kutilgan natija
"Ali"

2. (dokon, oson) Xuddi shu JSONB dan 'ism' ni matn sifatida ->> bilan chiqaring.

Kutilgan natija
Ali

3. (dokon, oson) 'yosh' maydonini butun songa aylantirib 5 qo'shing.

Kutilgan natija
30

4. (dokon, oson) Mahsulotdan JSON obyekt yasang: jsonb_build_object('id',id,'nom',nom), birinchi 3.

Kutilgan natija
{"id": 1, "nom": "Telefon 1"}
{"id": 2, "nom": "Noutbuk 2"}
{"id": 3, "nom": "Futbolka 3"}

5. (dokon, oson) Kategoriyalar ro'yxatini JSON massivga jamlang (jsonb_agg nom bo'yicha).

Kutilgan natija
["Elektronika", "Kitob", "Kiyim", "Oziq-ovqat", "Uy-ro'zg'or"]

6. (dokon, oson) '{"a":1,"b":2}' dagi kalitlarni jsonb_object_keys bilan chiqaring.

Kutilgan natija
a
b

7. (dokon, o'rta) 'atributlar' JSONB ustunli mahsulot_json jadvali yarating, 2 qator qo'shing va rangi 'qora' bo'lganlar sonini toping.

Kutilgan natija
1

8. (dokon, o'rta) @> (contains) operatori: {"rang":"oq","ram":16} ichida {"rang":"oq"} bormi?

Kutilgan natija
t

9. (dokon, o'rta) ? operatori: JSONB da 'ram' kaliti bormi?

Kutilgan natija
t

10. (dokon, o'rta) jsonb_set: {"a":1} ga 'b':2 qo'shib, 'a' ni 10 ga o'zgartiring.

Kutilgan natija
{"a": 10, "b": 2}

11. (dokon, o'rta) || operatori bilan ikki JSONB ni birlashtiring.

Kutilgan natija
{"a": 1, "b": 2}

12. (dokon, o'rta) - operatori bilan kalitni o'chirish: {"a":1,"b":2} dan 'a' ni olib tashlang.

Kutilgan natija
{"b": 2}

13. (dokon, o'rta) Massiv elementi: '[10,20,30]' dan 2-element (indeks 1) va uzunligi.

Kutilgan natija
20 | 3

14. (dokon, o'rta) jsonb_array_elements bilan '[1,2,3]' elementlari yig'indisi.

Kutilgan natija
6

15. (dokon, o'rta) Ichma-ich yo'l: {"manzil":{"shahar":"Toshkent"}} dan shaharni #>> bilan chiqaring.

Kutilgan natija
Toshkent

16. (dokon, o'rta) Buyurtmalarni har bir mijoz bo'yicha JSON massivga jamlang: mijoz_id va buyurtma id lar massivi, birinchi 3 mijoz.

Kutilgan natija
1 | [30, 60]
2 | [13, 43]
3 | [26, 56]

17. (dokon, qiyin) Mijozlar jadvalini to'liq to'liq JSON ga aylantiring: to_jsonb(m) dan 'ism' va 'shahar', birinchi 3.

Kutilgan natija
Vali Rahimova | Samarqand
Sardor Tursunov | Buxoro
Dilnoza Aliyev | Andijon

18. (dokon, qiyin) jsonb_to_recordset bilan JSON massivni jadvalga aylantiring: [{"id":1,"nom":"a"},{"id":2,"nom":"b"}].

Kutilgan natija
1 | a
2 | b

19. (dokon, qiyin) jsonb_path_query: '$.tovarlar[*].narx' bilan narxlar yig'indisi (tovarlar massivida).

Kutilgan natija
35

20. (dokon, qiyin) Buyurtma yuki (payload): har bir buyurtma uchun elementlar JSON (mahsulot_id, miqdor) massivi; id<=3.

Kutilgan natija
1 | [{"miqdor": 2, "mahsulot": 12}, {"miqdor": 3, "mahsulot": 23}]
2 | [{"miqdor": 4, "mahsulot": 9}, {"miqdor": 1, "mahsulot": 20}]
3 | [{"miqdor": 2, "mahsulot": 6}, {"miqdor": 3, "mahsulot": 17}]

21. (dokon, qiyin) GIN indeks: mahsulot_json jadvali (atr jsonb) yarating, GIN indeks qo'shing, indeks turini ko'rsating.

Kutilgan natija
gin

22. (maktab, oson) O'quvchi ma'lumotlarini JSON ga: jsonb_build_object('ism',ism,'sinf',sinf_id), birinchi 3.

Kutilgan natija
{"ism": "Madina Karimova", "sinf": 2}
{"ism": "Sherzod Ismoilov", "sinf": 3}
{"ism": "Nilufar Hasanova", "sinf": 4}

23. (maktab, oson) Sinf bo'yicha o'quvchi ismlari JSON massivi (sinf 1 uchun).

Kutilgan natija
["Aziz Ergashev", "Doniyor Ergashev", "Laylo Hasanova", "Madina Karimova", "Nilufar Hasanova", "Sevara Karimova", "Sherzod Ismoilov", "Timur Ismoilov"]

24. (maktab, oson) '{"fan":"Matematika","ball":5}' dan ball ni butunga aylantirib chiqaring.

Kutilgan natija
5

25. (maktab, o'rta) Baholar JSON: o'quvchi 1 ning baholari massiv sifatida (fan_id, ball obyektlar), sana tartibida.

Kutilgan natija
[{"fan": 1, "ball": 1}, {"fan": 1, "ball": 1}, {"fan": 1, "ball": 1}]

26. (maktab, o'rta) JSON massiv ['a','b','c'] ni qatorlarga yoying (jsonb_array_elements_text) tartib raqami bilan.

Kutilgan natija
1 | a
2 | b
3 | c

27. (maktab, o'rta) jsonb_each_text bilan {"x":1,"y":2} ni (kalit, qiymat) qatorlarga aylantiring.

Kutilgan natija
x | 1
y | 2

28. (maktab, qiyin) O'qituvchi + fanlari ierarxik JSON: har bir o'qituvchi uchun {'ism', 'fanlar':[...]} (id<=3, fanlari bor).

Kutilgan natija
{"ism": "Gulnora Saidova", "fanlar": ["Matematika"]}
{"ism": "Shuhrat Nazarov", "fanlar": ["Fizika"]}
{"ism": "Malika Qodirov", "fanlar": ["Kimyo"]}

29. (maktab, qiyin) jsonb_object_agg: fan nomi -> o'rtacha ball (2 xona) JSON obyekt (fan_id<=3).

Kutilgan natija
{"Kimyo": 2.95, "Fizika": 2.89, "Matematika": 3.00}

30. (maktab, qiyin) jsonb_path_exists: JSON '{"baholar":[5,4,3]}' da 4 dan katta element bormi.

Kutilgan natija
t

31. (bank, oson) Hisob JSON: jsonb_build_object('id',id,'balans',balans) birinchi 3.

Kutilgan natija
{"id": 1, "balans": 1234567.00}
{"id": 2, "balans": 2469134.00}
{"id": 3, "balans": 3703701.00}

32. (bank, oson) Filiallar ro'yxati JSON massiv (nom bo'yicha).

Kutilgan natija
["Andijon filiali", "Buxoro filiali", "Chilonzor", "Markaziy", "Registon"]

33. (bank, o'rta) Mijoz hisoblari jamlanmasi: mijoz 1 uchun {'ism', 'hisoblar':[id lar]}.

Kutilgan natija
{"ism": "Shahzoda Normatova", "hisoblar": [10, 20, 30, 40]}

34. (bank, o'rta) JSONB ustun: 'sozlama' jadvali (mijoz_id, qiymat jsonb) yarating, {"til":"uz","bildirishnoma":true}; til ni chiqaring.

Kutilgan natija
uz | t

35. (bank, o'rta) jsonb_set bilan sozlamani yangilash: til 'ru' ga o'zgartiring.

Kutilgan natija
ru

36. (bank, qiyin) Tranzaksiyalar JSON hisoboti: tur bo'yicha {tur: jami} obyekt.

Kutilgan natija
{"kirim": 129350750.00, "chiqim": 62237125.00, "otkazma": 62175375.00}

37. (bank, qiyin) jsonb_pretty emas; JSON ichidagi massiv elementlari bo'yicha agregat: '[{"s":100},{"s":250}]' dagi s yig'indisi.

Kutilgan natija
350

38. (kutubxona, oson) Kitob JSON: jsonb_build_object('nom',nom,'yil',yil) birinchi 3.

Kutilgan natija
{"nom": "Kitob 1 yoli", "yil": 1961}
{"nom": "Kitob 2 kuni", "yil": 1972}
{"nom": "Kitob 3 dunyosi", "yil": 1983}

39. (kutubxona, o'rta) Muallif bo'yicha kitoblar JSON massivi (muallif 1).

Kutilgan natija
["Kitob 8 sirlari", "Kitob 16 sirlari", "Kitob 24 sirlari", "Kitob 32 sirlari", "Kitob 40 sirlari"]

40. (kutubxona, o'rta) Teglar massivi: '["roman","tarix"]' da 'tarix' bormi (? operatori).

Kutilgan natija
t

41. (kutubxona, qiyin) Muallif -> kitoblar -> yil: har bir muallif uchun {'muallif', 'kitoblar': [{'nom','yil'}]}, muallif id<=2.

Kutilgan natija
{"muallif": "Abdulla Qodiriy", "kitoblar": [{"nom": "Kitob 8 sirlari", "yil": 1965}, {"nom": "Kitob 16 sirlari", "yil": 1980}, {"nom": "Kitob 24 sirlari", "yil": 1995}, {"nom": "Kitob 32 sirlari", "yil": 2010}, {"nom": "Kitob 40 sirlari", "yil": 1952}]}
{"muallif": "Cholpon", "kitoblar": [{"nom": "Kitob 1 yoli", "yil": 1961}, {"nom": "Kitob 9 yoli", "yil": 1976}, {"nom": "Kitob 17 yoli", "yil": 1991}, {"nom": "Kitob 25 yoli", "yil": 2006}, {"nom": "Kitob 33 yoli", "yil": 2021}]}