怎么算设备的最大连续运行时长

用下面代码建表:

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值加起来是多少

请先 登录 后评论

1 个回答

wale

用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

请先 登录 后评论
  • 1 关注
  • 0 收藏,657 浏览
  • Alex 提出于 2022-12-17 22:29