Используйте full join
и coalesce():
with query_a(id, name, count) as (
values
(1, 'Test', 3),
(2, 'Test1', 2)
),
query_b(id, name, count) as (
values
(1, 'Test', 0),
(2, 'Test1', 0),
(3, 'Test2', 0),
(4, 'Test3', 0)
)
select id, name, coalesce(a.count, b.count) as count
from query_a a
full join query_b b using(id, name)
id | name | count
----+-------+-------
1 | Test | 3
2 | Test1 | 2
3 | Test2 | 0
4 | Test3 | 0
(4 rows)