用segment对状态进行分组,代码如下:
select sum(iif(status==1, val, 0)) from t group by segment(status)
运行结果如下:
segment_status sum 0 0 1 174 5 0 6 221 10 0 11 46 12 0 13 15 14 0
用下面代码建表:
n=15 ts=now()+1..n status=rand(0 1 ,n) val=rand(100,n) t=table(ts,status,val) select * from t order by ts
其中有3个字段,ts表示时间,status表示设备状态(0表示关机,1表示运行),val表示运行时长。假设数据如下所示:
ts status val 2022.12.17T22:12:59.468 0 58 2022.12.17T22:12:59.469 1 43 2022.12.17T22:12:59.470 1 29 2022.12.17T22:12:59.471 1 13 2022.12.17T22:12:59.472 1 89 2022.12.17T22:12:59.473 0 25 2022.12.17T22:12:59.474 1 64 2022.12.17T22:12:59.475 1 7 2022.12.17T22:12:59.476 1 80 2022.12.17T22:12:59.477 1 70 2022.12.17T22:12:59.478 0 98 2022.12.17T22:12:59.479 1 46 2022.12.17T22:12:59.480 0 65 2022.12.17T22:12:59.481 1 15 2022.12.17T22:12:59.482 0 40
请问一下如何计算最大连续运行时长?比如上面第2到第5条记录status值都是1时,val值加起来是多少,第7-10条记录status值都是1时,val值加起来是多少