Clickhouse - начальное сложение матриц: как суммировать двухмерные массивы? - PullRequest
1 голос
/ 09 июля 2020

Каков правильный и самый быстрый способ вычисления поштучной суммы матриц в таблице с использованием базы данных 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 Ответ

0 голосов
/ 09 июля 2020

Комбинаторы агрегатных функций могут применяться многократно, что помогает упростить запрос:

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