【问题标题】:Clickhouse - Matrix entrywise addition: how to sum 2 dimensional arrays?Clickhouse - 矩阵逐项加法:如何对二维数组求和?
【发布时间】: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]]  │
└───────────────┘

【问题讨论】:

    标签: arrays matrix multidimensional-array clickhouse


    【解决方案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]]             │
    └───────────────────────────┘
    */
    

    【讨论】:

    • 哦!非常感谢你!原来如此简单优雅......但从码头上很难理解这种组合
    猜你喜欢
    • 2014-12-02
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 2020-03-19
    • 2021-12-28
    • 1970-01-01
    • 2017-10-28
    • 2023-04-05
    相关资源
    最近更新 更多