Clickhouse - 在数组中移动总和
Posted
技术标签:
【中文标题】Clickhouse - 在数组中移动总和【英文标题】:Clickhouse - Moving Sum in Arrays 【发布时间】:2021-03-18 14:14:33 【问题描述】:我正在寻找一种对数组中(n 个前瞻性数组元素)求和的有效方法。
例如
Input -> [1,2,3,4,5,6,7,8]
Expected Result (for n = 2) -> [3,5,7,9,11,13,15,8]
Similarly if the n=3 then Expected Result -> [6,9,12,15,18,21,15,8]
有没有办法,这可以在 CH 中以超高效的方式完成。谢谢!
编辑:我想知道这是否可以在不使用的情况下完成 arrayReduceInRanges(agg_func,范围,arr1 ...)。 我们使用的 CH 版本(版本 19.15.1)没有 arrayReduceInRanges
【问题讨论】:
【参考方案1】:试试这个:
WITH 2 AS n
SELECT
range(1, 9, 1) AS arr,
arrayMap((x, index) -> arraySum(arraySlice(arr, index, n)), arr, arrayEnumerate(arr)) AS result
┌─arr───────────────┬─result───────────────┐
│ [1,2,3,4,5,6,7,8] │ [3,5,7,9,11,13,15,8] │
└───────────────────┴──────────────────────┘
【讨论】:
非常感谢弗拉基米尔...非常有帮助!!以上是关于Clickhouse - 在数组中移动总和的主要内容,如果未能解决你的问题,请参考以下文章
Clickhouse - 矩阵逐项加法:如何对二维数组求和?
Clickhouse 如何计算间隔总和 PAUSE -> UNPAUSE?
ClickHouse SQL 极简教程ClickHouse SQL 之数据控制语言 DCL
错误:无法初始化类 ru.yandex.clickhouse.ClickHouseUtil