首页 > 解决方案 > SQL:如何按列分组而不爆炸表中的聚合值

问题描述

如何在不爆炸聚合值的情况下转换table_1table_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

countcolumn 是列的计数,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

谁能帮帮我?
提前致谢。

标签: sqlgroup-byaggregateaggregate-functions

解决方案


你想要一个窗口函数:

select t1.*,
       count(*) over (partition by a, b) as count
from table_1 t1;

create table as table_2如果要table_2使用这些计数创建,可以使用。


推荐阅读