Three accpeted solutions
SELECT D.Name AS Department ,E.Name AS Employee ,E.Salary \n    FROM\n    \tEmployee E,\n    \t(SELECT DepartmentId,max(Salary) as max FROM Employee GROUP BY De
    SELECT D.Name AS Department ,E.Name AS Employee ,E.Salary \n    FROM\n    \tEmployee E,\n    \t(SELECT DepartmentId,max(Salary) as max FROM Employee GROUP BY DepartmentId) T,\n    \tDepartment D\n    WHERE E.DepartmentId = T.DepartmentId \n      AND E.Salary = T.max\n      AND E.DepartmentId = D.id\n\n    SELECT D.Name,A.Name,A.Salary \n    FROM \n    \tEmployee A,\n    \tDepartment D   \n    WHERE A.DepartmentId = D.Id \n      AND NOT EXISTS \n      (SELECT 1 FROM Employee B WHERE B.Salary > A.Salary AND A.DepartmentId = B.DepartmentId) \n\n    SELECT D.Name AS Department ,E.Name AS Employee ,E.Salary \n    from \n    \tEmployee E,\n    \tDepartment D \n    WHERE E.DepartmentId = D.id \n      AND (DepartmentId,Salary) in \n      (SELECT DepartmentId,max(Salary) as max FROM Employee GROUP BY DepartmentId)
[]