使用数组计算上一个和下一个值

ej83mcc0  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(1)|浏览(312)

是否有一种方法可以使用clickhouse(数组?)计算依赖于先前计算的值的顺序值。
例如,在第一天,我从0开始——消耗5——加上100——最后是=0-5+100=95
我的第二天,从第1天的结果开始,即95——再次消耗10——加上5——以95-10+5=90结束(这将是第3天的开始)
给定数组[5,10,25]
添加数组[100,5,10]
计算结束位置和(=第二天开始位置)

-   
                                                  Day1  Day2    Day3
--------------------------------------------------------------------
StartingPosition (a) = Previous Ending Position |  0     95 90  Calculate
Consumed (b)                                    |  5     10 25  
Added (c)                                       |  100   5  10  
EdingPosition (d) = a-b+c                       |  95    90 75  Calculate
2q5ifsrm

2q5ifsrm1#

只需先完成所有的add/consume操作,然后进行累加。

WITH [5,10,25] as ConsumeArray,
     [100,5,10] as AddArray
SELECT
    arrayCumSum(arrayMap((c, a) -> a - c, ConsumeArray, AddArray));

相关问题