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

Using Arrays to Calculate Previous and Next Values

有没有一种方法可以使用 Clickhouse(数组?)来计算依赖于先前计算值的顺序值。

例如 在第 1 天,我从 0 开始——消耗 5——添加 100——最终 = 0 - 5 + 100 = 95

我的第 2 天,从第 1 天结束的 95 开始——再次消耗 10——加 5——结束 95-10+5=90(这将是第 3 天的开始)

给出 ConsumeArray [5,10,25]

添加数组 [100,5,10]

计算 EndingPosition 和(= 第二天的 StartingPosition)

                                        -   
                                                  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

先完成所有的add/consume操作,然后再累加。

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