oracle sql显示总和大于5

sey*_*tan 1 sql oracle

我有以下数据。

select 1 id, 3 amount from dual UNION ALL
select 2 id, 2 amount from dual UNION ALL
select 3 id, 1 amount from dual UNION ALL
select 4 id, 4 amount from dual UNION ALL
select 5 id, 7 amount from dual UNION ALL
select 6 id, 1 amount from dual UNION ALL
select 7 id, 2 amount from dual UNION ALL
select 8 id, 10 amount from dual UNION ALL
select 9 id, 3 amount from dual UNION ALL
select 10 id, 4 amount from dual UNION ALL
select 11 id, 2 amount from dual  UNION ALL
select 12 id, 4 amount from dual  UNION ALL
select 13 id, 8 amount from dual
Run Code Online (Sandbox Code Playgroud)

我需要计算一笔金额。当它达到5时必须重置。以前的总数必须在新列中显示。我只需要使用oracle sql的解决方案。

例外结果是:

在此处输入图片说明

Kam*_*dov 6

有很多方法可以解决此问题。我将使用oracle Model子句提供解决方案。

with data as (
select 1 id, 3 amount from dual UNION ALL
select 2 id, 2 amount from dual UNION ALL
select 3 id, 1 amount from dual UNION ALL
select 4 id, 4 amount from dual UNION ALL
select 5 id, 7 amount from dual UNION ALL
select 6 id, 1 amount from dual UNION ALL
select 7 id, 2 amount from dual UNION ALL
select 8 id, 10 amount from dual UNION ALL
select 9 id, 3 amount from dual UNION ALL
select 10 id, 4 amount from dual UNION ALL
select 11 id, 2 amount from dual  UNION ALL
select 12 id, 4 amount from dual  UNION ALL
select 13 id, 8 amount from dual
)

select id,amount,case when depletion<=5 then 0 else depletion end depletions from data

model  ignore nav
  dimension by (id)
  measures ( amount, 0  depletion  )
  rules  
  (
    depletion[ANY] = case when depletion[cv()-1]>5 then 0 else depletion[cv()-1] end  +amount[cv()]
  )
Run Code Online (Sandbox Code Playgroud)