I have a Table in Oracle as below
CREATE TABLE Employees(EmpId INT,
EmpName VARCHAR2(30),
Designation VARCHAR2(30),
Salary INT);
I have inserted rows in table as below
INSERT ALL
INTO Employees(EmpId, EmpName, Designation, Salary)VALUES(101, 'Scott', 'Clerk', 2500)
INTO Employees(EmpId, EmpName, Designation, Salary)VALUES(102, 'Mac', 'Manager', 5000)
INTO Employees(EmpId, EmpName, Designation, Salary)VALUES(103, 'Steave', 'Clerk', 1500)
INTO Employees(EmpId, EmpName, Designation, Salary)VALUES(104, 'John', 'Clerk', 1500)
INTO Employees(EmpId, EmpName, Designation, Salary)VALUES(105, 'Jack', 'Analyst', 2500)
INTO Employees(EmpId, EmpName, Designation, Salary)VALUES(106, 'Paul', 'Manager', 4500)
INTO Employees(EmpId, EmpName, Designation, Salary)VALUES(107, 'Ryan', 'Clerk', 1250)
INTO Employees(EmpId, EmpName, Designation, Salary)VALUES(108, 'Phillipe', 'Analyst', 3150)
INTO Employees(EmpId, EmpName, Designation, Salary)VALUES(109, 'Clark', 'Clerk', 1200)
INTO Employees(EmpId, EmpName, Designation, Salary)VALUES(110, 'Arnold', 'Clerk', 1100)
SELECT * FROM dual;
Below is the Short overview of Table

Now I want to get the Top paid people grouped by designation as Below
EmpName Designation Salary
Phillipe Analyst 3150
Scott Clerk 2500
Mac Manager 5000
I want empName, Designation and max Salary by designation.
I Tried the below query but it is bringing all records
SELECT EmpName, Designation, max(Salary) AS msal
FROM Employees
GROUP BY Designation, EmpName
ORDER BY Designation, msal DESC
Thanks for Reply