Find 3rd Highest Salary
---------Using Sub Query 3rd Highest Salary All Employees---------
SELECT * FROM Emp WHERE Salary IN(
SELECT TOP 1 salary FROM
(
SELECT TOP 3 salary FROM Emp e ORDER BY Salary DESC
)
a ORDER BY a.Salary
)
------------------- 3rd highest salary-----------
-----3rd Hightest salary----------
DECLARE @n INT=3
SELECT DISTINCT(Salary) from emp e1
where @n=(
SELECT COUNT(DISTINCT(salary)) from emp e2
where e2.salary>=e1.salary
)
--------------3rd Highest Salary-----------
;WITH cte AS
(
SELECT Id,Name,e.Salary, DENSE_RANK() OVER (PARTITION BY e.Salary ORDER BY e.Salary) AS sal
FROM Emp e
)
SELECT *
FROM cte WHERE sal=2
-----------------------
DECLARE @N int
SET @N = 3 -- Change the value here to pick a different salary rank
SELECT Salary
FROM (
SELECT row_number() OVER (ORDER BY Salary DESC) as SalaryRank, Salary
FROM Emp e
) as SalaryCTE
WHERE SalaryRank = @N
SELECT * FROM Emp WHERE Salary IN(
SELECT TOP 1 salary FROM
(
SELECT TOP 3 salary FROM Emp e ORDER BY Salary DESC
)
a ORDER BY a.Salary
)
------------------- 3rd highest salary-----------
-----3rd Hightest salary----------
DECLARE @n INT=3
SELECT DISTINCT(Salary) from emp e1
where @n=(
SELECT COUNT(DISTINCT(salary)) from emp e2
where e2.salary>=e1.salary
)
--------------3rd Highest Salary-----------
;WITH cte AS
(
SELECT Id,Name,e.Salary, DENSE_RANK() OVER (PARTITION BY e.Salary ORDER BY e.Salary) AS sal
FROM Emp e
)
SELECT *
FROM cte WHERE sal=2
-----------------------
DECLARE @N int
SET @N = 3 -- Change the value here to pick a different salary rank
SELECT Salary
FROM (
SELECT row_number() OVER (ORDER BY Salary DESC) as SalaryRank, Salary
FROM Emp e
) as SalaryCTE
WHERE SalaryRank = @N
Comments
Post a Comment