WITH t1 AS ( SELECT *, RANK() OVER(PARTITION BY department ORDER BY salary DESC) AS rk FROM employees ) SELECT department,employee_name,salary FROM t1 WHERE rk <= 2 ORDER BY department,salary DESC;