How to find third or nᵗʰ maximum salary from salary table?

后端 未结 30 664
醉酒成梦
醉酒成梦 2020-11-30 16:30

How to find third or nth maximum salary from salary table(EmpID, EmpName, EmpSalary) in optimized way?

30条回答
  •  挽巷
    挽巷 (楼主)
    2020-11-30 17:06

    If you want optimize way means use TOP Keyword, So the nth max and min salaries query as follows but the queries look like a tricky as in reverse order by using aggregate function names:

    N maximum salary:

    SELECT MIN(EmpSalary)
    FROM Salary
    WHERE EmpSalary IN(SELECT TOP N EmpSalary FROM Salary ORDER BY EmpSalary DESC) 
    

    for Ex: 3 maximum salary:

    SELECT MIN(EmpSalary)
    FROM Salary
    WHERE EmpSalary IN(SELECT TOP 3 EmpSalary FROM Salary ORDER BY EmpSalary DESC) 
    

    N minimum salary:

    SELECT MAX(EmpSalary)
    FROM Salary
    WHERE EmpSalary IN(SELECT TOP N EmpSalary FROM Salary ORDER BY EmpSalary ASC)
    

    for Ex: 3 minimum salary:

    SELECT MAX(EmpSalary)
    FROM Salary
    WHERE EmpSalary IN(SELECT TOP 3 EmpSalary FROM Salary ORDER BY EmpSalary ASC)
    

提交回复
热议问题