Если я правильно понимаю, вам нужны отделы, где минимальная зарплата выпадает как минимум вдвое. Это заставляет меня думать об оконных функциях:
select t.department_id
from (select t.*,
count(*) over (partition by department_id, salary) as cnt,
row_number() over (partition by department_id order by salary) as seqnum
from t
) t
where seqnum = 1 and cnt > 1;
Обратите внимание, что вам не нужно select distinct
, потому что это выбирает не более одной строки на отдел.