Tuesday 4 December 2018

GET Nth Maximum Salary in SQL Server

In Below Post I have explained 2 way to get nth maximum salary in SQL Server.

Create Temperary Table  

create table #Employee
(
  Id int   Identity(1,1), 
  Name varchar(10) not null,
  salary numeric(18,2) not null,
  Email varchar(50)
)

insert into #Employee (Name,salary,Email)
values('Manish',1000,'ak@gmail.com'),
('Anill',2000,'Anill@gmail.com'),
('Sunil',1200,'Sunil@gmail.com'),
('Ram',1700,'ram@gmail.com'),
('Arun',1800,'arun@gmail.com'),
('Neha',2000,'Neha@gmail.com'),
('Vivek',2100,'Vivek@gmail.com')

---Nth highest salary using correlated subquery
DECLARE @N int=2
SELECT name, salary ,Email
FROM #Employee e1
WHERE @N-1 = (SELECT COUNT(DISTINCT salary) FROM #Employee e2
WHERE e2.salary > e1.salary)

--Nth highest salary in SQL SERVER using TOP keyword

SELECT TOP 1 salary
FROM (
SELECT DISTINCT TOP 2 salary
FROM #Employee
ORDER BY salary DESC
) AS temp
ORDER BY salary

No comments:

Post a Comment