Clickhouse - 矩阵逐项加法:如何对二维数组求和?
Posted
技术标签:
【中文标题】Clickhouse - 矩阵逐项加法:如何对二维数组求和?【英文标题】:Clickhouse - Matrix entrywise addition: how to sum 2 dimensional arrays? 【发布时间】:2020-07-09 11:49:23 【问题描述】:使用 Clickhouse 数据库计算表中矩阵的逐项总和的正确和最快的方法是什么?
我找到了这样的解决方案。但在我看来,这还不够理想。 还有一个,我需要为一维的每个元素指定 sumForEach()。
select array(sumForEach(matrix[1]), sumForEach(matrix[2])) from (
select 1 as id, [[1,3], [2,4]] as matrix
union all
select 2 as id, [[2,4], [3,5]] as matrix
union all
select 3 as id, [[1,2], [1,0]] as matrix
)
因此,我希望看到一行带有结果矩阵
┌─m─────────────┐
│[[4,9],[6,9]] │
└───────────────┘
【问题讨论】:
【参考方案1】:Aggregate function combinators可以多次使用,有助于简化查询:
SELECT sumForEachForEach(matrix)
FROM
(
SELECT
1 AS id,
[[1, 3], [2, 4]] AS matrix
UNION ALL
SELECT
2 AS id,
[[2, 4], [3, 5]] AS matrix
UNION ALL
SELECT
3 AS id,
[[1, 2], [1, 0]] AS matrix
)
/*
┌─sumForEachForEach(matrix)─┐
│ [[4,9],[6,9]] │
└───────────────────────────┘
*/
【讨论】:
哦!非常感谢你!原来如此简单优雅......但从码头上很难理解这种组合以上是关于Clickhouse - 矩阵逐项加法:如何对二维数组求和?的主要内容,如果未能解决你的问题,请参考以下文章