3,490
社区成员
发帖
与我相关
我的任务
分享
11:29:49 scott@TUNGKONG> select * from tb;
ID DH CD
---- ---------- ----------
i1 1 20
i1 2 30
i1 3 10
i2 1 10
i2 2 15
i2 3 5
已选择6行。
已用时间: 00: 00: 00.00
11:29:52 scott@TUNGKONG> select id,dh1,dh2,cd from
11:30:02 2 (select id,dh dh1,lead(dh) over(partition by id order by rownum) dh2,cd + lead(cd) over(partition by id order by rownum) cd from
11:30:02 3 (select id,dh,cd from tb union all select x.id,x.dh,x.cd from tb x,(select id,min(dh) dh from tb group by id) y where x.id = y.id and x.dh = y.dh))
11:30:02 4 where dh2 is not null;
ID DH1 DH2 CD
---- ---------- ---------- ----------
i1 1 2 50
i1 2 3 40
i1 3 1 30
i2 1 2 25
i2 2 3 20
i2 3 1 15
已选择6行。
已用时间: 00: 00: 00.01
11:30:44 scott@TUNGKONG> select id,dh dh1,nvl(lead(dh)over(partition by id order by dh),min(dh)over(partition by id)) dh2,
11:30:59 2 cd+nvl(lead(cd)over(partition by id order by dh),max(cd)keep(dense_rank first order by dh)over(partition by id)) cd
11:30:59 3 from tb;
ID DH1 DH2 CD
---- ---------- ---------- ----------
i1 1 2 50
i1 2 3 40
i1 3 1 30
i2 1 2 25
i2 2 3 20
i2 3 1 15
已选择6行。
已用时间: 00: 00: 00.03
select id,dh1,dh2,cd from
(select id,dh dh1,lead(dh) over(partition by id order by rownum) dh2,cd + lead(cd) over(partition by id order by rownum) cd from
(select id,dh,cd from tb union all select x.id,x.dh,x.cd from tb x,(select id,min(dh) dh from tb group by id) y where x.id = y.id and x.dh = y.dh))
where dh2 is not null;
with tt as(select 'i1' id,1 dh,20 cd from dual
union all select 'i1',2,30 from dual
union all select 'i1',3,10 from dual
union all select 'i2',1,10 from dual
union all select 'i2',2,15 from dual
union all select 'i2',3,5 from dual)
select id,dh,nvl(lead(dh)over(partition by id order by dh),min(dh)over(partition by id)) dh,
cd+nvl(lead(cd)over(partition by id order by dh),max(cd)keep(dense_rank first order by dh)over(partition by id)) cd
from tt
ID DH DH CD
i1 1 2 50
i1 2 3 40
i1 3 1 30
i2 1 2 25
i2 2 3 20
i2 3 1 15