SQL:如何按列分组而不爆炸表中的聚合值
Posted
技术标签:
【中文标题】SQL:如何按列分组而不爆炸表中的聚合值【英文标题】:SQL: How to group by column without exploding aggregating value in the table 【发布时间】:2021-11-15 20:53:40 【问题描述】:如何在不爆炸聚合值的情况下将table_1
转换为table_2
,如下所示:
-- table_1
a b
aaa 1
bbb 2
aaa 3
ccc 4
ccc 4
bbb 1
ddd 4
bbb 2
aaa 3
-- table_2
a b count
aaa 1 1
bbb 2 2
aaa 3 2
ccc 4 2
ccc 4 2
bbb 1 1
ddd 4 1
bbb 2 2
aaa 3 2
count
列是 a
和 b
列的计数,我只知道如何获取 count
值而不是像下面的代码一样消耗:
SELECT COUNT(*)
FROM table_1
GROUP BY a, b
-- result
a b count
aaa 1 1
bbb 2 2
aaa 3 2
ccc 4 2
bbb 1 1
ddd 4 1
谁能帮帮我? 提前致谢。
【问题讨论】:
【参考方案1】:你想要一个窗口函数:
select t1.*,
count(*) over (partition by a, b) as count
from table_1 t1;
如果你想用这些计数创建table_2
,你可以使用create table as table_2
。
【讨论】:
以上是关于SQL:如何按列分组而不爆炸表中的聚合值的主要内容,如果未能解决你的问题,请参考以下文章
Power Query M - 使用自定义聚合(百分位)按列值分组