017. Window funksiyalar
Bu mavzuda ROW_NUMBER, RANK, LAG, LEAD va oyna chegaralari bo'yicha 61 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) Mahsulotlarni narx bo'yicha kamayish tartibida ROW_NUMBER bilan raqamlang (id, narx, raqam), birinchi 8.
Kutilgan natija
2. (dokon, oson) Har bir mahsulot narxi bilan RANK (narx bo'yicha kamayish) ni chiqaring, birinchi 8.
Kutilgan natija
3. (dokon, oson) Har bir mahsulot yonida umumiy o'rtacha narxni (window AVG) ko'rsating (birinchi 5, 2 xona).
Kutilgan natija
4. (dokon, oson) Kategoriya ichida narx bo'yicha DENSE_RANK (kamayish), birinchi 10 qator (kategoriya, id).
Kutilgan natija
5. (dokon, oson) Har bir kategoriyaning eng qimmat mahsuloti (ROW_NUMBER=1).
Kutilgan natija
6. (dokon, oson) Mahsulot narxi va o'z kategoriyasi o'rtacha narxi (window, 2 xona), birinchi 6.
Kutilgan natija
7. (dokon, o'rta) Buyurtmalar sana bo'yicha oldingi buyurtma sanasi (LAG), birinchi 6.
Kutilgan natija
8. (dokon, o'rta) Keyingi buyurtmagacha kunlar farqi (LEAD), birinchi 6.
Kutilgan natija
9. (dokon, o'rta) To'lovlarning kumulyativ yig'indisi (id tartibida), birinchi 6.
Kutilgan natija
10. (dokon, o'rta) To'lovlar uchun 3 qatorli harakatlanuvchi o'rtacha (id tartibida, 0 xona), birinchi 6.
11. (dokon, o'rta) Har bir mijozning birinchi buyurtmasi sanasi (FIRST_VALUE), birinchi 6 buyurtma (mijoz_id, id tartibida).
Kutilgan natija
12. (dokon, o'rta) Mijoz bo'yicha buyurtmalar tartib raqami (ROW_NUMBER), birinchi 8.
Kutilgan natija
13. (dokon, o'rta) Har bir mijozning eng so'nggi buyurtmasi (id, sana) — ROW_NUMBER bilan, birinchi 6.
Kutilgan natija
14. (dokon, o'rta) Mahsulotlarni narx bo'yicha 4 ta guruhga (NTILE(4)) ajrating; har bir guruh nechtadan, guruh raqami va soni.
15. (dokon, o'rta) Har bir mahsulot narxining kategoriyadagi ulushi (foizda, 1 xona), birinchi 6.
16. (dokon, qiyin) Oylik buyurtmalar soni va o'sish: oldingi oyga nisbatan farq (LAG), oylar bo'yicha.
Kutilgan natija
17. (dokon, qiyin) Mijozlar bo'yicha jami sarf (bekor emas) va uning umumiy jamidagi kumulyativ foizi, birinchi 6 (kamayish tartibida).
Kutilgan natija
18. (dokon, qiyin) Har bir kategoriyada narxi bo'yicha 2-o'rindagi mahsulot (DENSE_RANK=2, id bo'yicha).
Kutilgan natija
19. (dokon, qiyin) RANGE oyna: har bir buyurtma uchun o'zidan oldingi 10 kun ichidagi buyurtmalar soni (birinchi 8, sana tartibida).
Kutilgan natija
20. (maktab, oson) O'quvchilarni o'rtacha ball bo'yicha RANK qiling (birinchi 8).
Kutilgan natija
21. (maktab, oson) O'qituvchilarni maosh bo'yicha tartiblab ROW_NUMBER bering.
Kutilgan natija
Anvar Qodirov | 6000000.00 | 1
Feruza Nazarov | 5750000.00 | 2
Rustam Saidova | 5500000.00 | 3
Malika Qodirov | 5250000.00 | 4
Shuhrat Nazarov | 5000000.00 | 5
Gulnora Saidova | 4750000.00 | 6
Anvar Qodirov | 4500000.00 | 7
Feruza Nazarov | 4250000.00 | 8
Rustam Saidova | 4000000.00 | 9
Malika Qodirov | 3750000.00 | 10
22. (maktab, oson) Har bir o'quvchi balli va o'quvchi o'rtacha balli yonma-yon (window AVG, 2 xona), birinchi 6.
Kutilgan natija
23. (maktab, o'rta) Har bir sinfda eng yosh o'quvchi (ROW_NUMBER, tugilgan DESC).
Kutilgan natija
24. (maktab, o'rta) Har bir fan bo'yicha eng yuqori ball oluvchilar orasida eng kichik id li o'quvchi — fan, oquvchi (RANK bilan, ball bo'yicha, har fanda birinchi baho).
Kutilgan natija
25. (maktab, o'rta) O'quvchi baholarining kumulyativ o'rtachasi (sana, id tartibida) 1-o'quvchi uchun.
26. (maktab, o'rta) Oldingi baho bilan farq (LAG) 1-o'quvchi baholari uchun.
27. (maktab, o'rta) O'qituvchilar maoshini sinf rahbarlari ichida ... emas: maoshi bo'yicha NTILE(3) toifalari (ism, toifa).
Kutilgan natija
Anvar Qodirov | 6000000.00 | 1
Feruza Nazarov | 5750000.00 | 1
Rustam Saidova | 5500000.00 | 1
Malika Qodirov | 5250000.00 | 1
Shuhrat Nazarov | 5000000.00 | 2
Gulnora Saidova | 4750000.00 | 2
Anvar Qodirov | 4500000.00 | 2
Feruza Nazarov | 4250000.00 | 2
Rustam Saidova | 4000000.00 | 3
Malika Qodirov | 3750000.00 | 3
28. (maktab, o'rta) Har bir o'quvchi uchun sinfidagi maksimal balli (window MAX) bilan solishtirish: birinchi 6 baho.
29. (maktab, qiyin) Har bir sinfda o'rtacha balli bo'yicha top-2 o'quvchi (sinf, o'quvchi, ortacha).
Kutilgan natija
30. (maktab, qiyin) Ketma-ket 'kelmadi' lar: davomat sanalari bo'yicha 1-o'quvchi uchun oldingi holat va keyingi holatni (LAG/LEAD) chiqaring.
31. (maktab, qiyin) Har bir fan bo'yicha o'rtacha ball va fanlar orasida o'rin (DENSE_RANK) — fan nomi bilan.
Kutilgan natija
32. (maktab, qiyin) Percent_rank: o'qituvchilarning maoshi bo'yicha foizli o'rni (2 xona).
Kutilgan natija
33. (bank, oson) Hisoblarni balans bo'yicha RANK qiling (birinchi 8).
Kutilgan natija
34. (bank, oson) Tranzaksiyalarning kumulyativ summasi (id tartibida), birinchi 6.
Kutilgan natija
35. (bank, oson) Har bir hisob turi ichida balans bo'yicha ROW_NUMBER, birinchi 6 (tur, raqam).
Kutilgan natija
36. (bank, o'rta) Hisob tranzaksiyalari bo'yicha qoldiq (kirim +, chiqim -, otkazma -) kumulyativ, 1-hisob.
37. (bank, o'rta) Mijoz bo'yicha eng katta qarz (RANK=1).
Kutilgan natija
38. (bank, o'rta) Tranzaksiya summasining oldingisiga nisbatan farqi (LAG), 1-hisob.
39. (bank, o'rta) Hisob balansi bo'yicha NTILE(4) kvartil, har bir kvartildagi hisoblar soni.
40. (bank, o'rta) Har bir hisobdagi birinchi va oxirgi tranzaksiya summasi (FIRST_VALUE, LAST_VALUE bilan to'liq oyna), birinchi 5 hisob.
Kutilgan natija
41. (bank, qiyin) 3 tranzaksiyalik harakatlanuvchi o'rtacha summa (1-hisob, 0 xona).
42. (bank, qiyin) Har bir filialda eng katta umumiy balansli mijoz (filial, mijoz, jami).
Kutilgan natija
43. (bank, qiyin) Gaps: ketma-ket tranzaksiyalar orasidagi vaqt (soat) farqi eng katta bo'lgan juftlik (1-hisob).
44. (bank, qiyin) Eng ko'p tranzaksiya qilgan 3 kun (DENSE_RANK bilan soni bo'yicha, tenglik bo'lsa hammasi).
Kutilgan natija
45. (kutubxona, oson) Kitoblarni nashr yili bo'yicha ROW_NUMBER (yangidan eskiga), birinchi 6.
Kutilgan natija
46. (kutubxona, oson) Har bir janrda eng yangi kitob (ROW_NUMBER=1).
47. (kutubxona, oson) Ijaralar kumulyativ soni (olingan tartibida), birinchi 6.
Kutilgan natija
48. (kutubxona, o'rta) A'zo bo'yicha ijaralar tartib raqami (ROW_NUMBER), birinchi 8.
Kutilgan natija
49. (kutubxona, o'rta) A'zoning har bir keyingi ijarasi orasidagi kunlar (LAG), 1-a'zo.
50. (kutubxona, o'rta) Muallif bo'yicha kitoblarni nashr yili bo'yicha RANK (birinchi 8, muallif, yil).
Kutilgan natija
51. (kutubxona, o'rta) Janr bo'yicha kitob nusxalarining yig'indisi har bir kitob yonida (window SUM), birinchi 6.
Kutilgan natija
52. (kutubxona, qiyin) Har bir janrdagi kitoblarning yil bo'yicha kumulyativ nusxa soni (janr 1).
Kutilgan natija
53. (kutubxona, qiyin) Har bir a'zoning eng uzoq ushlab turilgan ijarasi (qaytarilganlar, ROW_NUMBER).
Kutilgan natija
54. (kutubxona, qiyin) Ketma-ket ikki ijarada bir xil janr olgan a'zolar soni (LAG yordamida janr taqqoslash).
55. (kutubxona, qiyin) Kitoblarning yil bo'yicha o'rin (CUME_DIST, 2 xona), birinchi 6 (yil o'sish bo'yicha).
Kutilgan natija
56. (kutubxona, qiyin) Har bir muallifning birinchi nashr etilgan va oxirgi kitobi yili farqi (MAX-MIN OVER) — faqat bitta qator muallif uchun DISTINCT, birinchi 5.
57. (dokon, qiyin) Har bir mahsulot kategoriyasidagi o'rtachadan farqi (narx - kategoriya o'rtachasi, 0 xona), birinchi 6 (id).
58. (dokon, qiyin) Mijozlarni ro'yxatdan o'tish tartibida, shahar ichida nechanchi ekanligi (ROW_NUMBER) birinchi 8.
Kutilgan natija
59. (dokon, qiyin) Window FILTER: kategoriya bo'yicha qimmat (>300000) mahsulotlar soni har bir mahsulot yonida (birinchi 6).
60. (maktab, qiyin) NTH_VALUE: har bir fanda ikkinchi eng yuqori ballni (ball bo'yicha DESC) NTH_VALUE bilan, fan 1..3.
61. (bank, qiyin) Tranzaksiyalar: har bir hisobda eng katta summali tranzaksiya ulushi (shu hisob jamiga nisbatan %), birinchi 5 hisob.