如何获得相干细胞的最大数量?

时间:2017-05-09 10:14:05

标签: sql

我的表中有以下数据:

ID - 数据

1 - 0
2 - 10
3 - 100
4 - 60
5 - 0
6 - 0
7 - 15
8 - 100
9 - 100
10 - 70
11 - 10
12 - 0
13 - 0

我想要的是行的最大数量> 0

此数据显示设备的能耗,以给定总数的百分比表示。 我基本上想知道的是:设备“开启”的时间最长?

1 个答案:

答案 0 :(得分:0)

我猜你的例子数据预计会得到结果5(最长的非零数字序列)。您可以使用Oracle中的递归CTE执行此操作:

with testData as (
select '1' id, '0' val from dual
union all
select '2', '10' from dual
union all
select '3', '100' from dual
union all
select '4', '60' from dual
union all
select '5', '0' from dual
union all
select '6', '0' from dual
union all
select '7', '15' from dual
union all
select '8', '100' from dual
union all
select '9', '100' from dual
union all
select '10', '70' from dual
union all
select '11', '10' from dual
union all
select '12', '0' from dual
union all
select '13', '0' from dual
) ,
cte (id, val, sumX) as (
select t.id, val, case when val !=0 then 1 else 0 end from testData t where id = 1
union all
select t.id, t.val,  case when t.val !=0 then sumX+1 else 0 end 
from testData t
inner join cte
    on cte.id = t.id-1  
)
select max(sumx) from cte