ClickHouse - 如何使用另一个数组中的键对嵌套地图求和?

ClickHouse - How to sum nested map, with keys from another array?

我有以下 table,其中 names 是一个名称数组,data 是一个映射:

names data
[['James', 'Scott'], ['James', 'Scott']] [[{'sales': 20.0}, {'sales': 20.0}], [{'sales': 25.0}, {'sales': 15.0}]]

我想做的是将映射中的每个条目与对应的名称相加,得到以下结果:

names data
['James', 'Scott'] [{'sales': 45.0}, {'sales': 35.0}]
create table i_hate_people_who_answer_questions(
names Array(Array(String)),
data Array(Array(Map(String, Float64)))
)
Engine=Memory;

insert into i_hate_people_who_answer_questions
values( [['James', 'Scott'], ['James', 'Scott']], [[map('sales', 20.0), map('sales', 20.0)], [map('sales', 25.0), map('sales', 15.0)]] ) ;

我试过 sumMap(names, data) 但这不起作用,因为 data 是另一个映射并且此函数需要原始数据类型,给出以下错误:"Illegal type Map(String, Decimal(38, 2)) of argument for aggregate function sum."

如有任何帮助,我们将不胜感激。

SELECT
    __names,
    sumMap(__data)
FROM
(
    SELECT
        __names,
        __data
    FROM
    (
        SELECT
            _names,
            _data
        FROM i_hate_people_who_answer_questions
        ARRAY JOIN
            names AS _names,
            data AS _data
    )
    ARRAY JOIN
        _names AS __names,
        _data AS __data
)
GROUP BY __names

┌─__names─┬─sumMap(__data)─┐
│ James   │ {'sales':45}   │
│ Scott   │ {'sales':35}   │
└─────────┴────────────────┘

SELECT
    groupArray(__names),
    groupArray(___data)
FROM
(
    SELECT
        __names,
        sumMap(__data) AS ___data
    FROM
    (
        SELECT
            __names,
            __data
        FROM
        (
            SELECT
                _names,
                _data
            FROM i_hate_people_who_answer_questions
            ARRAY JOIN
                names AS _names,
                data AS _data
        )
        ARRAY JOIN
            _names AS __names,
            _data AS __data
    )
    GROUP BY __names
)

┌─groupArray(__names)─┬─groupArray(___data)─────────┐
│ ['James','Scott']   │ [{'sales':45},{'sales':35}] │
└─────────────────────┴─────────────────────────────┘