|
Running total с отсечением
|
|||
---|---|---|---|
#18+
Возникла "полупятничная" задачка - суммирование с накоплением вроде sum() over(order by), только если результат становится отрицательным, ставим 0 и со следующей строки продолжаем суммирование с нуля. Долго не думал, сделал с помощью MODEL. А какие ещё есть варианты? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 18:28 |
|
Running total с отсечением
|
|||
---|---|---|---|
#18+
STFF reset running total ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 18:38 |
|
Running total с отсечением
|
|||
---|---|---|---|
#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.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2020, 22:31 |
|
Running total с отсечением
|
|||
---|---|---|---|
#18+
Спасибо за ключевые слова. Сейчас понял, что с моделью я перемудрил, тут и recursive CTE достаточно: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
А вариант с match_recognize так вообще крутой. И в нём нет бага, который есть в моей модели, который вылазит, если в первой записи указать отрицательное число. Поправить несложно, конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2020, 12:39 |
|
|
start [/forum/topic.php?fid=52&fpage=29&tid=1880571]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 269ms |
total: | 407ms |
0 / 0 |