Вы можете использовать оконные функции:
select dept_id, salary
from (
select
t.*,
row_number() over(partition by dept_id order by salary desc) rn,
count(*) over(partition by dept_id) cnt
from mytable t
) t
where rn = 2 or (rn = 1 and cnt = 1)
Подзапрос оценивает записи, имеющие один и тот же отдел, путем уменьшения зарплаты, и подсчитывает, сколько сотрудников имеет каждый отдел. Затем вы можете использовать эту информацию для фильтрации во внешнем запросе.