是否可以根据 BigQuery SQL 中的某种映射进行分组

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

我在 BigQuery 中有一个表,我希望能够根据某种类型的映射文件进行分组,例如,如果我有以下内容

产品代码 国家 销售
AA1 美国 5
AA2 美国 10
AA1 英国 15
BB1 美国 20
BB2 美国 25
BB2 英国 25

以及以下映射

[AA1, AA2] > AA1
[BB1, BB2] > BB1

我理想地希望获得以下内容:

产品代码 国家 销售
AA1 美国 15
AA1 英国 15
BB1 美国 45
BB1 英国 25

显然除了更大的规模之外。我想知道是否有一种方法可以纯粹用 SQL 来做到这一点

sql mysql google-bigquery
1个回答
0
投票

您可以使用

CASE
表达式进行聚合,该表达式执行映射:

SELECT
    CASE WHEN ProductCode IN ('AA1', 'AA2') THEN 'AA1'
         WHEN ProductCode IN ('BB1', 'BB2') THEN 'BB1' END AS ProductCode,
    Country,
    SUM(Sales) AS Sales
FROM yourTable
GROUP BY 1, 2;
© www.soinside.com 2019 - 2024. All rights reserved.