You are on page 1of 3

Different ways to find the Nth highest salary

BY USING DENSE_RANK

SELECT * FROM (
SELECT ENAME, SAL, DENSE_RANK ()
OVER (ORDER BY SAL DESC) R FROM EMPLOYEE)
WHERE R=&N;

BY USING RANK
SELECT e3.empno empno, e3.ename name, e3.sal salary

FROM (

SELECT e1.sal, RANK() OVER (ORDER BY e1.sal DESC) RANK

FROM (SELECT DISTINCT e2.sal FROM emp e2) e1 ) empx, emp e3

WHERE RANK = &n

AND e3.sal = empx.sal;

BY UISNG CORRELATED SUBQUERY:


SELECT empno, ename, sal

FROM emp e1

WHERE &

BY USING ROW NUMBER:


SELECT empno ,ename, salary

FROM (
SELECT empno, ename, sal as salary, ROW_NUMBER() OVER(ORDER BY Sal DESC) as
nth_highest_salary

  FROM emp)

WHERE nth_highest_salary = &n;

BY USING LEVEL AND CONNECT BY PRIOR


SELECT LEVEL, MAX(sal) salary

FROM emp

WHERE LEVEL = &n

CONNECT BY PRIOR sal > sal

GROUP BY LEVEL;

You might also like