Rank Functions:: Select Ename, Job, Sal, Row - Number Over (Order by Sal Desc) RN From Emp
Rank Functions:: Select Ename, Job, Sal, Row - Number Over (Order by Sal Desc) RN From Emp
1. Row_number()
2. Dense_rank()
3. Rank()
We can apply ranks at table level or at any particular group level also like job level.
14 rows selected.
ROW_NUMBER(): this functions returns unique ranks for all values including duplicates also.
14 rows selected.
14 rows selected.
DENSE_RANK()
This function returns unique rank for distinct values and same rank for duplicate values.
After same rank, this function continues the next rank, means it will not maintain any gaps
between ranks.
14 rows selected.
14 rows selected.
Display ename who is taking 5th max sal in the emp table
SQL> select ename from (select ename,job,sal,dense_rank() over(order by sal desc) dn from emp) tt
where dn=5;
ENAME
----------
CLARK
Display emp details who are taking max salaries in each job
SQL> select * from (select ename,job,sal,dense_rank() over(partition by job order by sal desc) dn from
emp) where dn=1;
6 rows selected.
SQL> select * from (select ename,job,sal,dense_rank() over(partition by job order by sal desc) dn from
emp) where dn=2;
ENAME JOB SAL DN
---------- --------- ---------- -----------------------
ADAMS CLERK 1100 2
BLAKE MANAGER 2850 2
TURNER SALESMAN 1500 2
SQL> select * from (select ename,job,sal,dense_rank() over(partition by job order by sal desc) dn from
emp) where dn=3;
Display emp details who are very low salaries from emp table:
SQL> select * from (select ename,job,sal,dense_rank() over(partition by job order by sal) dn from emp)
where dn=1;
7 rows selected.
Display emp details who are very low salaries from each job:
SQL> select * from (select ename,job,sal,dense_rank() over(partition by job order by sal) dn from emp)
where dn=1;
7 rows selected.
RANK()
This function gives unique rank for distinct values and same rank for duplicate values, but after
same rank it will maintain gaps in the ranks.
14 rows selected.
14 rows selected.