【问题标题】:SQL: Create a pivot tableSQL:创建数据透视表
【发布时间】:2022-01-03 00:28:46
【问题描述】:

我有一个如下所示的表格:

category feature_a feature_b
top20 3 5
top10 2 6
top10 1 7
top20 4 8

我要做的是创建一个如下所示的数据透视表:

features top20 top10
feature_a 7 3
feature_b 13 13

第二个表中的每个值都是每个类别的每个特征的总和。我正在阅读数据透视表here 上的文档,但这对我需要得到的东西没有帮助。知道如何实现吗? (注:“pivot”功能我不必使用,如果可以通过其他功能实现)

【问题讨论】:

  • 请提供您的解决方案尝试

标签: sql database google-bigquery bq


【解决方案1】:

您可以使用 UNION 合并 2 个数据透视表,例如:

SELECT 
    'feature_a' "FEATURE", 
    SUM(CASE WHEN category = 'top10' THEN feature_a ELSE 0 END) "TOP10",
    SUM(CASE WHEN category = 'top20' THEN feature_a ELSE 0 END) "TOP20"
FROM bigdata
UNION
SELECT 
    'feature_b' "FEATURE", 
    SUM(CASE WHEN category = 'top10' THEN feature_b ELSE 0 END) "TOP10",
    SUM(CASE WHEN category = 'top20' THEN feature_b ELSE 0 END) "TOP20"
FROM bigdata;

Pivot fiddle

【讨论】:

    【解决方案2】:

    下面是要走的路:

    select * from (
      select * from your_table
      unpivot (value for features in (feature_a, feature_b))
    )
    pivot (sum(value) for category in ('top20', 'top10'))             
    

    如果应用于我们问题中的样本数据 - 输出是

    【讨论】:

    • 你试过了吗?对你有用吗?
    猜你喜欢
    • 2012-07-20
    • 2020-08-18
    • 2021-01-19
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多