Skip to content
Advertisement

Counting unique pairs, but applying that count to all of its entries in SQL (not removing duplicates)

Let’s say I have a table:

ID  A   B
10  0   0
11  0   0
12  0   1
13  0   1
14  1   1
15  1   1
16  1   1

And I want my table output to be:

ID  A   B   A_B_COUNT
10  0   0   2
11  0   0   2
12  0   1   2
13  0   1   2
14  1   1   3
15  1   1   3
16  1   1   3

but with the code I have here my output looks like this

SELECT ID, COUNT(*) AS A_B_COUNT
FROM table
GROUP BY A, B

ID  A   B   A_B_COUNT
10  0   0   2
12  0   1   2
14  1   1   3

Any way I can create an sql query to is like my top table vs the one I make currently Using: 10.5.5-MariaDB

Advertisement

Answer

Use window functions:

select t.*, count(*) over (partition by a, b) as a_b_count
from t;
User contributions licensed under: CC BY-SA
5 People found this is helpful
Advertisement