Nth Highest Salary

Write a query to find the Nth Highest Salary.

Example:

Table: Employee            
    ID  Salary  
    1   400 
    2   200 
    3   300 
    4   500 
Result: Second highest salary is 400

Mysql

CREATE FUNCTION getNthHighestSalary(N INTRETURNS INT
BEGIN
DECLARE esalary INT;

SET N=N-1;
SELECT DISTINCT Salary into esalary 
FROM Employee 
ORDER BY Salary DESC LIMIT 1 OFFSET N;
      
return esalary;
 
END

Oracle

CREATE FUNCTION getNthHighestSalary(N IN NUMBERRETURN NUMBER IS
result NUMBER;
BEGIN

    select Salary into result from (
    select Salary, row_number() over (order by Salary desc ) as row_num 
from (select DISTINCT Salary from Employee))  
where row_num=N; 

    RETURN result;
    
END;


No comments:

Post a Comment