How to transform table_1 to table_2 without exploding aggregating values like follows:
-- 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 column is a count of column a and b and I only know how to get count value not expended like the following code:
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
Could anyone help me?
Thanks in advance.
CodePudding user response:
You want a window function:
select t1.*,
count(*) over (partition by a, b) as count
from table_1 t1;
You can use create table as table_2 if you want to create table_2 with these counts.
