select department, employee_name, salary from ( select *, rank() over(partition by department order by salary desc ) as rn from employees )a where rn < 3 order by department, salary desc