首页 > 解决方案 > 自定义运行和查询

问题描述

我需要一个查询来查找运行总和,但如果总和为正数则不需要进一步求和,并且它应该在出现负数时重新启动。

输入表

  row_number Id value
    2 1 -377  
    3 1 100  
    4 1 -4003 
    5 1 507  
    6 1 3774 
    7 1 499  
    8 1 511  
    9 1 -5000
    10 1 300  
    11 1 100

输出表

  Id value running_sum
    1 -377      -377
    1 100      -277
    1 -4003     -4280
    1 507      -3773
    1 3774       1
    1 499       500
    1 511       1011
    1 -5000    -5000
    1 300       -4700
    1 100       -4600

我已将查询写为

select *,sum(value) over (partition by id order by row_number rows betwwen unbounded preceding and current row) as running_sum 
from table1;

所以这总和,当负数出现在第 9 行时,我无法重新计算总和。

标签: sqlsum

解决方案


推荐阅读