【问题标题】:How to sum arrays element by element after group by in clickhouse如何在clickhouse中分组后逐个元素地对数组求和
【发布时间】:2020-01-30 20:14:27
【问题描述】:

我正在尝试在另一列分组之后逐个元素添加数组列元素。

如下表A:

id    units
 1    [1,1,1]
 2    [3,0,0]
 1    [5,3,7]
 3    [2,5,2]
 2    [3,2,6]

我想查询类似:

select id, sum(units) from A group by id  

并得到以下结果:

id    units
 1    [6,4,8]
 2    [6,2,6]
 3    [2,5,2]

其中具有相同 id 的行中的单位数组逐个元素添加。

【问题讨论】:

    标签: clickhouse


    【解决方案1】:

    试试这个查询:

    SELECT id, sumForEach(units) units
    FROM (
      /* emulate dataset */
      SELECT data.1 id, data.2 units
      FROM (
        SELECT arrayJoin([(1, [1,1,1]), (2, [3,0,0]), (1, [5,3,7]), (3, [2,5,2]), (2, [3,2,6])]) data))
    GROUP BY id
    
    /* Result
    ┌─id─┬─units───┐
    │  1 │ [6,4,8] │
    │  2 │ [6,2,6] │
    │  3 │ [2,5,2] │
    └────┴─────────┘
    */
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-15
      相关资源
      最近更新 更多