我有这样的数据
type reg met
AAC AP 5.849357195
SAC EM 0.8690077048
SAC AP 0.537474743
AAC EM 3.118546972
AAC La 7.385316518
我想使用SQL或presto 显示如下
type AP EM La
AAC 5.849357195 3.118546972 7.385316518
SAC 0.537474743 0.8690077048 -
pivot似乎不适合我的用例,因为pivot中应该有一个聚合。
有人能帮忙吗?
您可以使用条件聚合:
select type,
max(case when reg = 'AP' then met end) as ap,
max(case when reg = 'EM' then met end) as em,
max(case when reg = 'LA' then met end) as la
from t
group by type;
请注意,您也可以将pivot
与max()
一起使用。我建议使用条件聚合。它是标准SQL,更灵活,而且据我所知,使用pivot
没有性能优势。