Method 1: ( Using analytical funtion )
SQL> Select *
2 from (Select ename,
3 sal,
4 dense_rank() over ( order by sal desc ) Salary_Rank
5 from emp1)
6 where salary_rank < 4;
ENAME SAL SALARY_RANK
---------- ---------- -----------
RAVI 65000 1
RAJA 32322 2
SUSIL 9000 3
Method 2: (Using rownum Label with simple SQL construct)
SQL> SELECT *
2 FROM emp1
3 WHERE sal >
4 (SELECT sal
5 FROM
6 (SELECT rownum r, sal FROM
7 (SELECT DISTINCT sal FROM emp1 ORDER BY sal DESC
8 )
9 )
10 WHERE r =4
11 )
12 order by 2 desc;
ENAME SAL
---------- ----------
RAVI 65000
RAJA 32322
SUSIL 9000
SQL> Select *
2 from (Select ename,
3 sal,
4 dense_rank() over ( order by sal desc ) Salary_Rank
5 from emp1)
6 where salary_rank < 4;
ENAME SAL SALARY_RANK
---------- ---------- -----------
RAVI 65000 1
RAJA 32322 2
SUSIL 9000 3
Method 2: (Using rownum Label with simple SQL construct)
SQL> SELECT *
2 FROM emp1
3 WHERE sal >
4 (SELECT sal
5 FROM
6 (SELECT rownum r, sal FROM
7 (SELECT DISTINCT sal FROM emp1 ORDER BY sal DESC
8 )
9 )
10 WHERE r =4
11 )
12 order by 2 desc;
ENAME SAL
---------- ----------
RAVI 65000
RAJA 32322
SUSIL 9000
Comments