|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
Похоже, я настолько тупой, что потратил более двух часов на следующую задачу безрезультатно: Допустим, есть две колонки: ORDVALa1b2b1c3d0d2d5e100f50f50 Нужно получить выборку (дебильным) нарастающим итогом значения VAL c группировкой/сортировкой по ORD, при условии, что .. (будет проще показать) : Результат (сортировка по ORD): ORDVALкомментарийa1началоb4b:2+1=3; + предыдущая_строка = 4c4c:3 меньше чем 4 поэтому не учитывается=0; + предыдущая_строка = 4d11d:0+2+5=7; + предыдущая_строка = 11e111e:100; + предыдущая_строка = 111f111f:50+50=100 меньше чем 111 поэтому не учитывается=0; + предыдущая_строка = 111 фу, вроде бы не ошибся нигде Нужно без использования PL/SQL. Сломал себе об это голову. Может быть кто поможет? Пожалуйста ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 12:46 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
--Eugene--ORDddd фу, вроде бы не ошибся нигдеУверен? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 12:57 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
--Eugene--, Если по быстрому (на коленках собрать) то вот: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 13:41 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
MaximaXXL, Хотя нет, там не учитываеться отнимаемый ранее параметр ... сейчас чтот придумаю ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 13:47 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
MaximaXXLMaximaXXL, Хотя нет, там не учитываеться отнимаемый ранее параметр ... сейчас чтот придумаю Только with рекурсия. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 13:48 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
--Eugene--, a,c,e не повторяются? ps непонятно что не получается, та в лоб и закодировать ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 14:02 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
--Eugene--, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 14:13 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
ааа, не дочитал условие ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 14:15 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 14:20 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
Elic--Eugene--ORDddd фу, вроде бы не ошибся нигдеУверен?есть сомнения?Staxa,c,e не повторяются? ps непонятно что не получается, та в лоб и закодироватьпро повторение вопрос не вполне понятен, а закодировать в PL/SQL(?) - нужно запросом ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 14:23 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
--Eugene--, влоб Код: 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. 38. 39.
зи мож моделькой или мач-рекогнизе получтся .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 14:24 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
--Eugene--, мож вместо abcdf четные/нечетные брать, алгоритм обсчета вроде как бы чередуется ,,,,, stax ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 14:29 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
После группировки Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 14:36 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
xtender Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
неее. на строке d FIXED_RUNNING_TOTAL должно быть 11, а не 4 Stax Код: 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.
ну как-то уж совсем влоб )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 14:37 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
--Eugene--неее. на строке d FIXED_RUNNING_TOTAL должно быть 11, а не 4ну подумай немножко-то... в запросе всего один символ лишний... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 14:38 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
xtender, и то верно спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 15:03 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
xtender, у этого решения косяк такой-же как и у моего: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
если поставить например у 'd' =4 то он не будет учитывать накопленные минуса и даст неправильный результат: ORD SV RUNNING_TOTAL FIXED_RUNNING_TOTALa 1 1 1b 3 4 4c 3 7 4d 6 13 4e 100 113 104f 100 213 104 Тут реально надо через with делать или match_recognize ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 15:17 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
MaximaXXLесли поставить например у 'd' =4 то он не будет учитывать накопленные минуса и даст неправильный результат: ORD SV RUNNING_TOTAL FIXED_RUNNING_TOTALa 1 1 1b 3 4 4c 3 7* 4d 6* 13 4e 100 113 104f 100 213 104 Тут реально надо через with делать или match_recognizeВ смысле? 6 меньше 7, поэтому этот результат не засчитывается. Все ок ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 15:55 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
--Eugene--, мож я неправильно условие понял "поэтому не учитывается=0" для всех строк или токо для cf? ps если для всех, то убрать case .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 16:04 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
MaximaXXL, Код: 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. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 16:16 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
xtender, Как Я понял, 6 не должно проверяться с 7, а должно провериться со значением предыдуще расчитанного столбца (FIXED_RUNNING_TOTAL) = 4 и как следствие должно быть учтено. Хотя постановка двоякая и пример не отображает этого поведения ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 16:19 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
SY, Как делать через with я понимаю, я попытался сделать без него (пример не совсем удачен и данные сошлись) и понял что поможет только явная рекурсия. Но автор топика не я и подходит ему with подход или нет мне сложно судить. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 16:24 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
xtenderMaximaXXLесли поставить например у 'd' =4 то он не будет учитывать накопленные минуса и даст неправильный результат: ORD SV RUNNING_TOTAL FIXED_RUNNING_TOTAL...b 3 4 4c 3 7* 4d 6* 13 4... Тут реально надо через with делать или match_recognizeВ смысле? 6 меньше 7 ...но больше 4 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 16:31 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#18+
SY Код: plsql 1. 2. 3. 4.
SY. decode(sign(tt.sv-ttt.ss),-1,0,tt.sv)+ttt.ss .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 16:34 |
|
Условный нарастающий итог
|
|||
---|---|---|---|
#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.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2019, 19:37 |
|
|
start [/forum/topic.php?fid=52&fpage=87&tid=1882921]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 314ms |
total: | 458ms |
0 / 0 |