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

时间:2018-11-23 14:02:45

标签: clickhouse

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

例如 在第一天,我从0开始-消耗5-加100-最后以= 0-5 + 100 = 95

我的第二天开始于我在第一天结束时的结果,即95 –再次消耗10 –加5 –最后以95-10 + 5 = 90(这将是第三天的开始)

给出 ConsumeArray [5,10,25]

AddArray [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

1 个答案:

答案 0 :(得分:0)

只需先完成所有添加/消费操作,然后进行累加。

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