怎样求一段时间产量,表中记录是仪表的累积量,仪表中间可能清0

比如表t有字段  cl,cl为累积量,求一段时间产量。中间可能清0;

不清0m    select  max(cl)-min(cl)  from  t  就可以,

仪表出现清0则不正确。

在dolphindb怎样实现兼容这2种情况, 


请先 登录 后评论

2 个回答

wale

可以嵌套查询,示例如下,其中deltas是求相邻元素之差

t=table(1 2 3  7 0 1 3 6 8 0 5 as cl)
select sum(delta) from (select deltas(cl)  as delta from t) where delta>0
请先 登录 后评论
xlli

在计算1 2 3 7 0 1 3 6 8 0 5时,两个0之间的序列一定是单调递增序列,逻辑等同于计算(7-1) + (8-0) + (5-0),等同于(7+8) -1 + 5,等同于计算(所有0之前的数字之和)- (第一个数字)+ (最后一个数字)

res = t[next(t.cl)==0].cl.sum() - t.cl.first() + t.cl.last()

性能对比:

cl_list = (1..1000000).append!(0)
for(i in 1..9) {
    cl_list.append!((1..1000000).append!(0))
}
t=table(cl_list as cl)


timer exec sum(delta) from (
    select deltas(cl)  as delta 
    from t) 
where delta>0
// 86 ms

timer res = t[next(t.cl)==0].cl.sum() - t.cl.first() + t.cl.last()
// 35 ms



请先 登录 后评论
  • 3 关注
  • 0 收藏,730 浏览
  • zhchtao323 提出于 2023-04-07 21:59

相似问题