Clickhouse:基于另一个数组的数组总和

皮布罗95

假设您有下表:

ID  COUNTRIES                   UNITS
1   ['UK', 'Italy', 'France']   [2000, 1000, 1000]
1   ['France', 'Italy', 'UK']   [3000, 4000, 2000]
1   ['Italy']                   [2000]

ClickHouse 有没有办法将RATIOS列中每个国家的COUNTRIES相加就像是sum(UNITS) group by COUNTRIES

预期结果:

ID  COUNTRIES                   TOTAL_UNITS
1   ['UK', 'Italy', 'France']   [4000, 4000, 7000]

代表代码:

SELECT data.1 ID, data.2 COUNTRIES, data.3 UNITS
FROM (
    SELECT arrayJoin([(1, ['UK', 'Italy', 'France'], [2000, 1000, 1000]), 
                    (1, ['France', 'Italy', 'UK'], [3000, 4000, 2000]), 
                    (1, ['Italy'], [2000])]) data);
丹尼起重机
select sumMap(COUNTRIES, UNITS) from (

SELECT data.1 ID, data.2 COUNTRIES, data.3 UNITS
FROM (
    SELECT arrayJoin([(1, ['UK', 'Italy', 'France'], [2000, 1000, 1000]), 
                    (1, ['France', 'Italy', 'UK'], [3000, 4000, 2000]), 
                    (1, ['Italy'], [2000])]) data)

)

┌─sumMap(COUNTRIES, UNITS)───────────────────┐
│ (['France','Italy','UK'],[4000,7000,4000]) │
└────────────────────────────────────────────┘




select (sumMap(COUNTRIES, UNITS) as x).1 a , x.2  b from (

SELECT data.1 ID, data.2 COUNTRIES, data.3 UNITS
FROM (
    SELECT arrayJoin([(1, ['UK', 'Italy', 'France'], [2000, 1000, 1000]), 
                    (1, ['France', 'Italy', 'UK'], [3000, 4000, 2000]), 
                    (1, ['Italy'], [2000])]) data)

)
┌─a───────────────────────┬─b────────────────┐
│ ['France','Italy','UK'] │ [4000,7000,4000] │
└─────────────────────────┴──────────────────┘




select groupArray(COUNTRY) COUNTRIES, groupArray(s) UNITS from (
select sum(UNIT) s, COUNTRY from (

SELECT data.1 ID, data.2 COUNTRIES, data.3 UNITS
FROM (
    SELECT arrayJoin([(1, ['UK', 'Italy', 'France'], [2000, 1000, 1000]), 
                    (1, ['France', 'Italy', 'UK'], [3000, 4000, 2000]), 
                    (1, ['Italy'], [2000])]) data)
) array join UNITS as UNIT, COUNTRIES as COUNTRY
group by COUNTRY)

┌─COUNTRIES───────────────┬─UNITS────────────┐
│ ['France','Italy','UK'] │ [4000,7000,4000] │
└─────────────────────────┴──────────────────┘

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

基于另一个数组加入数组

PHP总和数组值基于另一个数组中的文本重复项

如何基于另一个数组分离一个数组

基于另一个数组映射一个数组

基于另一个数组在SystemVerilog中约束整个数组

数组的总和,条件在另一个数组中

当另一个数组等于 1 时获取 numpy 数组的总和

ClickHouse - 如何使用来自另一个数组的键对嵌套映射求和?

ClickHouse - 如何使用来自另一个数组的键对嵌套映射求和?

ClickHouse - 如何使用来自另一个数组的键对嵌套映射求和?

如何基于另一个数组的引用值对一个数组的值求和

php排序数组基于另一个数组和一个子数组字段

通过基于另一个数组过滤数据来创建对象数组

基于另一个数组“对数”分割数组中的值

通过基于另一个数组的键对数组进行排序?

在jq中获取基于另一个数组的数组

基于另一个数组的值的打字稿顺序数组

基于另一个数组值的对象总数组

爪哇:排序基于与方法的indexOf另一个数组的数组

删除基于另一个数组的数组元素

基于来自另一个数组的值的Typescript过滤器数组

删除基于另一个数组的嵌套数组

如何基于另一个数组中的值过滤对象数组

更改基于另一个数组的numpy数组值的矢量化方法

如何基于另一个数组元素更新数组的所有对象

如何基于JavaScript中另一个数组的索引从数组中选择元素?

在另一个数组中基于重复值合并数组?

检查基于另一个数组的数组中是否存在值

基于另一个数组的嵌套过滤器数组