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 列是 ab 列的计数,我只知道如何获取 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