024. ARRAY
Bu mavzuda massivlar va ular bilan ishlash bo'yicha 26 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) ARRAY[1,2,3] massivining uzunligini chiqaring (array_length).
2. (dokon, oson) Massivning ikkinchi elementini chiqaring: (ARRAY[10,20,30])[2].
3. (dokon, oson) Kategoriya nomlarini ARRAY_AGG bilan massivga yig'ing (nom bo'yicha).
4. (dokon, oson) 5 ning ARRAY[1,5,9] ichida borligini = ANY bilan tekshiring.
5. (dokon, oson) ARRAY['a','b'] || ARRAY['c'] bilan massivlarni birlashtiring.
6. (dokon, o'rta) UNNEST bilan ARRAY[3,1,2] ni qatorlarga yoying va tartiblang.
7. (dokon, o'rta) @> operatori: ARRAY[1,2,3] @> ARRAY[2,3] natijasi.
8. (dokon, o'rta) && operatori (kesishish): ARRAY[1,2] && ARRAY[2,5] natijasi.
9. (dokon, o'rta) Mijozlar shaharlarini noyob massivga yig'ing (alifbo tartibida).
10. (dokon, o'rta) Kategoriya bo'yicha mahsulot id lar massivi (birinchi 3 kategoriya).
11. (dokon, o'rta) Massiv ustunli jadval: 'teglar' (id, tag text[]) — 2 qator va 'yangi' tegiga ega qatorlar soni (= ANY).
12. (dokon, qiyin) array_to_string va string_to_array: 'a,b,c' ni massivga, so'ng '-' bilan qayta birlashtiring.
13. (dokon, qiyin) Ko'p o'lchovli massiv: ARRAY[[1,2],[3,4]] dan [2][1] elementi va o'lchamlar soni (array_ndims).
14. (dokon, qiyin) array_position va array_remove: ARRAY[5,6,7,6] da 7 ning o'rni va 6 olib tashlangan massiv.
15. (maktab, oson) O'quvchi baholarini massivga yig'ing (1-o'quvchi, sana tartibida).
16. (maktab, o'rta) Sinf bo'yicha o'quvchi ismlari massivi (birinchi 2 sinf).
Kutilgan natija
17. (maktab, o'rta) Massivdagi 5 lar sonini hisoblang: 1-o'quvchi baholaridan array_length(array_positions...) emas, UNNEST bilan 5 lar soni.
18. (maktab, qiyin) Massiv ustuni: 'ish_kunlari' (oqituvchi_id, kunlar int[]) — {1,3,5}; 3-kuni ishlaydiganlar.
19. (bank, oson) Hisob turlari massivi (noyob, tartibli).
20. (bank, o'rta) Mijoz hisob id lari massivi (birinchi 3 mijoz).
21. (bank, o'rta) ANY bilan IN o'rniga: hisob turi massivdagi qiymatlardan biri bo'lgan hisoblar soni ('{jamgarma,depozit}').
22. (bank, qiyin) Massiv bilan filtrlash: mijoz id lari massividagi hisoblar yig'indisi ('{1,2,3}').
23. (bank, qiyin) Tranzaksiya summalarining massivdagi eng kattasi (1-hisob): (ARRAY_AGG(summa ORDER BY summa DESC))[1].
24. (kutubxona, oson) Janr nomlari massivi.
25. (kutubxona, o'rta) Muallif kitob id lari massivi (muallif 1..3).
26. (kutubxona, qiyin) Ikki a'zo o'qigan kitoblar kesishmasi (array && va intersect emas): a'zo 1 va 2 ning kitob id massivlari kesishadimi.