My solution was very similar to another submitted solution. However, I really prefer CTEs over sub queries. Another benefit is Oracle's sub query factoring (not in use here), which will usually be more efficient (but not always!).
with rankedSalaries as (
select emps.*, dense_rank() over(partition by department order by salary desc) rank
from PLC2_Employees emps
select EmployeeID, EmployeeName, Department, Salary
where rankedSalaries.rank = 2
order by Department, EmployeeID