如何在clickhouse中分组后逐个元素地求和数组

Enr*_*uig 0 clickhouse

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

有下表A:

id    units
 1    [1,1,1]
 2    [3,0,0]
 1    [5,3,7]
 3    [2,5,2]
 2    [3,2,6]
Run Code Online (Sandbox Code Playgroud)

我想查询如下内容:

select id, sum(units) from A group by id  
Run Code Online (Sandbox Code Playgroud)

并得到以下结果:

id    units
 1    [6,4,8]
 2    [6,2,6]
 3    [2,5,2]
Run Code Online (Sandbox Code Playgroud)

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

vla*_*mir 7

试试这个查询:

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] ?
????????????????
*/
Run Code Online (Sandbox Code Playgroud)