Method 1 SQL:-
SQL Server 2nd, 3rd, 4th... Highest salary using MAX, DENSE_RANK, and SUB QUERY!
We can find the 2nd, 3rd, 4th ... nth highest salary using SQL Server the below query, In the below query use top 1 for the 2nd highest salary, top 2 for the 3rd highest salary, top 3 for the 4th highest salary,.... nth for the (n+1) highest salary.
Method 2 for MySQL:-
You can use LIMIT to get 2nd, 3rd, 4th ... nth highest salary!
Examples using MAX, DENSE_RANK in SQL
====================================
DECLARE @Employees TABLE (
employee_id INT,
name VARCHAR(25),
salary INT
)
INSERT INTO @Employees (employee_id, name, salary)
VALUES
(1, 'Anil', 62000),
(2, 'Alok', 55000),
(3, 'Ajay', 70000),
(4, 'Rahul', 62000),
(5, 'Diya', 75000);
SELECT
SALARY,
DENSE_RANK() OVER (ORDER BY SALARY DESC) AS SALARY_RANK
FROM @Employees
/*Example 1 with Max*/
============================================
SELECT MAX(salary) AS SecondHighestSalary
FROM @Employees
WHERE salary < (SELECT MAX(salary) FROM @Employees);
/*Example 2 with DENSE_RANK*/
================================================
;with cte as (
select salary, dense_rank() over( order by salary desc) as SalaryRank
from @Employees
)
select * from cte where SalaryRank=2 -- 2 = 2nd Highest Salary, 3 = 3rd Highest Salary, n = nth Highest Salary
================================================
The examples using SUB QUERY,
--QUERY FOR THE 2ND HIGHEST SALARY SELECT MAX(salary) AS [2ndHighestSalary] FROM Employee WHERE salary not in (SELECT TOP 1 salary FROM Employee GROUP BY salary ORDER BY salary DESC) --QUERY FOR THE 3RD HIGHEST SALARY SELECT MAX(salary) AS [3rdHighestSalary] FROM Employee WHERE salary not in (SELECT TOP 2 salary FROM Employee GROUP BY salary ORDER BY salary DESC) --QUERY FOR THE 4TH HIGHEST SALARY SELECT MAX(salary) AS [4thHighestSalary] FROM Employee WHERE salary not in (SELECT TOP 3 salary FROM Employee GROUP BY salary ORDER BY salary DESC) --QUERY FOR THE 5TH HIGHEST SALARY SELECT MAX(salary) AS [5thHighestSalary] FROM Employee WHERE salary not in (SELECT TOP 4 salary FROM Employee GROUP BY salary ORDER BY salary DESC) --QUERY FOR THE NTH HIGHEST SALARY SELECT MAX(salary) AS [nthHighestSalary] FROM Employee WHERE salary not in (SELECT TOP (n-1) salary FROM Employee GROUP BY salary ORDER BY salary DESC)
In MySQL simple and sweeter 2nd, 3rd, 4th... Highest salary.
You can use LIMIT to get highest salary!
Examples using MySQL LIMIT,
--QUERY FOR THE 2ND HIGHEST SALARY USINGH LIMIT SELECT salary FROM Employee ORDER BY salary DESC LIMIT 1, 1; --QUERY FOR THE 3rd HIGHEST SALARY USINGH LIMIT SELECT salary FROM Employee ORDER BY salary DESC LIMIT 2, 1; --QUERY FOR THE 4th HIGHEST SALARY USINGH LIMIT SELECT salary FROM Employee ORDER BY salary DESC LIMIT 3, 1;
I hope you are enjoying with this post! Please share with
you friends. Thank you!