首页 > 解决方案 > 根据 Google Big Query 中的案例分组和求和

问题描述

数据看起来像 -

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-bygoogle-bigquerysumcase-when

解决方案


以下是 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   

显然具有相同的结果


推荐阅读