with
t1 as(
    select
        department,
        employee_name,
        salary,
        rank()over(partition by department order by salary desc) as srank
    from
        employees
)

select
    department,
    employee_name,
    salary
from
    t1
where
    srank<=2
order by
    department,
    salary desc