Так близко ...
SELECT department, name, MAX(salary) as Highest salary
FROM employees
GROUP BY department, name
HAVING MAX(salary) < 50000
После обновления комментариев
SELECT name, department , salary
FROM employees e
JOIN
(
SELECT department as dept, MAX(salary) as HighestSalary
FROM employees
GROUP BY department
) MaxE ON e.department = MaxE.dept AND e.salary = MaxE.HighestSalary