Вы можете попробовать это.
--test data
with jobs(id,type) AS
(
select 1, 'A' FROM DUAL UNION ALL
select 1, 'A' FROM DUAL UNION ALL
select 2, 'A' FROM DUAL UNION ALL
select 2, 'A' FROM DUAL UNION ALL
select 2, 'B' FROM DUAL UNION ALL
select 3, 'A' FROM DUAL UNION ALL
select 3, 'B' FROM DUAL UNION ALL
select 4, 'B' FROM DUAL UNION ALL
select 4, 'B' FROM DUAL UNION ALL
select 5, 'B' FROM DUAL
) --test data ends
select count(only_a) as "Count of Type A Only",
count(only_b) as "Count of Type B Only",
count(both_a_and_b) as "Count of Type A and B both"
FROM
(
SELECT
ID,
CASE WHEN MAX(TYPE) = MIN(TYPE) and MIN(TYPE) = 'A' THEN 1 END only_a,
CASE WHEN MAX(TYPE) = MIN(TYPE) and MIN(TYPE) = 'B' THEN 1 END only_b,
CASE WHEN COUNT(DISTINCT TYPE) = 2 THEN 1 END both_a_and_b
FROM jobs
WHERE type in ('A','B')
GROUP BY ID
)s;
Демо