SQL:如何在不爆炸 table 中的聚合值的情况下按列分组
SQL: How to group by column without exploding aggregating value in the table
如何在不爆炸聚合值的情况下将 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
谁能帮帮我?
提前致谢。
你想要一个 window 函数:
select t1.*,
count(*) over (partition by a, b) as count
from table_1 t1;
如果要使用这些计数创建 table_2
,可以使用 create table as table_2
。
如何在不爆炸聚合值的情况下将 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
谁能帮帮我?
提前致谢。
你想要一个 window 函数:
select t1.*,
count(*) over (partition by a, b) as count
from table_1 t1;
如果要使用这些计数创建 table_2
,可以使用 create table as table_2
。