Если я правильно прочитал, вы ищете ровно 1 AA и 1 BB. Итак,
with sometable (name) as
(values ('AA'),('BB'))
select aa_cnt = 1 AND bb_cnt=1
from (select count(*) FILTER (WHERE name = 'AA') aa_cnt
, count(*) FILTER (WHERE name = 'BB') bb_cnt
from sometable
) c ;
Но если имя не уникально или 1 отсутствует
with sometable (name) as
(values ('AA'),('BB'), ('AA') )
select aa_cnt = 1 AND bb_cnt=1
from (select count(*) FILTER (WHERE name = 'AA') aa_cnt
, count(*) FILTER (WHERE name = 'BB') bb_cnt
from sometable
) c;
with sometable (name) as
(values ('AA'), ('AA') )
select aa_cnt = 1 AND bb_cnt=1
from (select count(*) FILTER (WHERE name = 'AA') aa_cnt
, count(*) FILTER (WHERE name = 'BB') bb_cnt
from sometable
) c
Я думаю, что ответ @Deepika вернет правильный, но неверный результат для последнего набора данных. Но я могу быть совершенно неправильно истолковывать это требование.