使用数组计算上一个和下一个值
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));
有没有一种方法可以使用 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));