|
|
|
Статистика по оплатам - нужна помощь в построении запроса
|
|||
|---|---|---|---|
|
#18+
Добрый день! Есть Поставщики Услуг PU_id, у каждого задолженности BID. ПУ может оплатить частями PAY_ID с суммой PAYSUM. Нужно построить запрос, выдающий статистику по динамике оплат, с учётом накопления суммы платежей/суммы остатка к оплате SUM_NAK/SUM_OST. Пример сведён к абстракции. Пока только такое решение, но корявое. Подмывает сделать group by rollup и в 1 заход, но не получилось. Прошу помочь с красивым решением, спасибо! with D as--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ( select 1 as PU_id,1 as PAY_ID,10 as BID,2 as PAYSUM from dual union all select 1,2,10,3 from dual union all select 1,3,10,5 from dual union all select 2,1,20,3 from dual union all select 2,2,20,17 from dual union all select 3,3,30,1 from dual union all select 3,4,30,7 from dual union all select 4,1,40,0 from dual ) --~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ select D.PU_id,D.PAY_ID,D.BID,D.PAYSUM,sum(D.PAYSUM) over (partition by D.PU_id order by D.PU_id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) SUM_NAK, D.BID-sum(D.PAYSUM) over (partition by D.PU_id order by D.PU_id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) SUM_OST from D group by D.PU_id,D.PAY_ID,D.BID,D.PAYSUM union all select D.PU_id,null,D.BID,sum(D.PAYSUM),sum(D.PAYSUM),D.BID-sum(D.PAYSUM) from D group by D.PU_id,D.BID union all select null,null,sum(D.BID),sum(D.PAYSUM),sum(D.PAYSUM),sum(D.BID)-sum(D.PAYSUM) from (select D.PU_id,D.BID,sum(D.PAYSUM) PAYSUM,sum(D.PAYSUM) ,D.BID-sum(D.PAYSUM) from D group by D.PU_id,D.BID )D order by 1,2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2017, 14:58 |
|
||
|
Статистика по оплатам - нужна помощь в построении запроса
|
|||
|---|---|---|---|
|
#18+
Используй тэг SRC, быстрее ответят Антон83 Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2017, 16:18 |
|
||
|
Статистика по оплатам - нужна помощь в построении запроса
|
|||
|---|---|---|---|
|
#18+
О, спасибо! Редактировать сообщения похоже нельзя. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. Жду идей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2017, 18:18 |
|
||
|
Статистика по оплатам - нужна помощь в построении запроса
|
|||
|---|---|---|---|
|
#18+
Антон83Жду идей. Вам бы с постановкой разобраться - кто на ком стоял и кем погонял. Впрочем, каков вопрос (получить на указанном наборе результат, идентичный представленному посредством rollup) - таков и ответ: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2017, 20:09 |
|
||
|
Статистика по оплатам - нужна помощь в построении запроса
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, Спасибо за ответ! Что именно не так с постановкой? Сортировка по возрастанию PU_id и PAY_ID, итоги не в приоритете. В реальной задаче PAY_ID могут совпадать (это не имеет значения, т.к. весь пул оплат от одного ПУ может быть в одном трансфере и для построения буду использовать ID записей трансфера в этом случае). Или в идеале нужны чёткие критерии по всем столбцам и описание модели? Какое наиболее оптимальное решение по Вашему мнению ( опять же в рамках абстракции)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2017, 21:31 |
|
||
|
Статистика по оплатам - нужна помощь в построении запроса
|
|||
|---|---|---|---|
|
#18+
Антон83, авторв рамках абстракции вы конкретизируйте, что именно у Вас не получается, кто или что у Вас пропадает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2017, 00:43 |
|
||
|
Статистика по оплатам - нужна помощь в построении запроса
|
|||
|---|---|---|---|
|
#18+
K790, Всё получается, оба скрипта (моё решение и решение andrey_anonymous) работают на отлично, ничего нигде не пропадает. Но нет уверенности в оптимальности, возможно я зря внимание на rollup акцентировал. Хотелось бы ещё идей по реализации, к тому же я пока слабо владею аналитическими функциями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2017, 11:13 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39559292&tid=1884846]: |
0ms |
get settings: |
4ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 308ms |

| 0 / 0 |
