17,377
社区成员
发帖
与我相关
我的任务
分享
--方法还是类似的啊
--觉得你这个需求有点不好理解,那你按照什么来排序呢?
--假设按照rownum
select decode(sign(cnt),-1,'亏损',1,'盈利',null),max(lv)
from (select cnt,level lv
from (select rownum rn,cnt from tb)
connect by prior rn=rn-1 and prior sign(cnt)=sign(cnt))
group by sign(cnt)
with tb as(
select 0 rq, 80 cnt from dual union all
select 1, 100 from dual union all
select 2, 200 from dual union all
select 3, -100 from dual union all
select 4, -5 from dual union all
select 5, -5 from dual union all
select 6, -50 from dual union all
select 7, 90 from dual union all
select 8, 800 from dual union all
select 9, -80 from dual)
select decode(sign(cnt),-1,'亏损',1,'盈利',null),max(lv)
from (select rq,cnt,level lv
from tb
connect by prior rq=rq-1 and prior sign(cnt)=sign(cnt))
group by sign(cnt)
DECO MAX(LV)
---- ----------
盈利 3
亏损 4