分组和总和,取决于Google Big Query中的情况

问题描述 投票:0回答:1

数据看起来像-

A_value      B_value    C_value     Type
   1          null        null       A
   2          null        null       A
  null         3          null       B
  null         4          null       B
  null        null         5         C
  null        null         6         C

[当类型为'A'时,我想对'A_value'求和并存储在另一个名为'Type_value'的列中,当类型为'B'时,我想对'B_value'求和并存储在列'Type_value'中,对“ C”执行类似操作]

预期结果-

Type_value      Type
    3            A
    7            B
    11           C

如何获得此结果?

group-by google-bigquery sum case-when
1个回答
2
投票

下面是BigQuery标准SQL的内容>>

#standardSQL
SELECT SUM(CASE Type
    WHEN 'A' THEN A_value
    WHEN 'B' THEN B_value
    WHEN 'C' THEN C_value
    ELSE 0
  END) AS Type_value, Type 
FROM `project.dataset.table`
GROUP BY Type   

如果要应用于问题中的样本数据-结果为

Row Type_value  Type     
1   3           A    
2   7           B    
3   11          C    

另一个可能的选择是重复使用以下事实:您的数据具有仅在相应列中具有价值的模式。因此,如果为真,则可以使用以下版本

#standardSQL
SELECT SUM(IFNULL(A_value, 0) + IFNULL(B_value, 0) + IFNULL(C_value, 0)) AS Type_value, Type 
FROM `project.dataset.table`
GROUP BY Type   

显然具有相同结果

© www.soinside.com 2019 - 2024. All rights reserved.