0

我有一个如下所示的表:

类别 特征_a 特征_b
前20名 3 5
前10名 2 6
前10名 1 7
前20名 4 8

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

特征 前20名 前10名
特征_a 7 3
特征_b 13 13

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

4

2 回答 2

0

下面是要走的路:

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

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

在此处输入图像描述

于 2021-11-24T21:16:45.170 回答
0

您可以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;

枢轴小提琴

于 2021-11-24T16:02:30.577 回答