teradata sql-汇总直到重置的时间?

时间:2018-06-20 16:53:04

标签: sql sum teradata reset

我正在Teradata中编写查询,需要求和一个对象命中一个数字所花费的时间。例如...对于数字0-4,我想对自对象达到3或更高的时间进行求和。 我从

开始
SUM(time)
OVER (PARTITION BY object
      ORDER BY object, number
      ROWS UNBOUNDED PRECEDING 1 FOLLOWING)

任何帮助将不胜感激。

样本数据... IDnum WS times 1 0 8012 1 1 6254 2 3 10225 2 1 5896 2 4 5485 2 0 7482 3 1 5487 3 2 5214

WS的范围是0-4,我需要对每个ID自翻新以来的时间求和,并在WS为3或更高(3或更高表示翻新)时重置时间计数。也就是说,如果有意义,我需要一个“自上次翻新以来的时间”。

期望的结果将是IDnum WS times time since last refurb 1 0 8012 14266 1 1 6254 14266 2 3 10225 16121 2 1 5896 16121 2 4 5485 23668 2 0 7482 23668 3 1 5487 23668 3 2 5214 23668

或类似的东西

1 个答案:

答案 0 :(得分:0)

您可以使用row_number()函数来生成累加和的序列:

select *, sum(times) over (partition by grp) as time_since_last_refurb
from (select *, sum(case when ws >= 3 then 1 else 0 end) over (order by seq) grp
      from (select *, row_number() over (order by idnum) seq
            from table
           ) t
     ) t;