Как суммировать массивы элемент за элементом после группировки в clickhouse - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь добавить элемент столбца массива за элементом после группы по другому столбцу.

Имея таблицу 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]

Где массивы единиц в строках с одинаковым идентификатором добавляются элемент за элементом.

1 Ответ

2 голосов
/ 01 октября 2019

Попробуйте этот запрос:

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] │
└────┴─────────┘
*/
...