-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy path1.WindowingFunction-RANK,DENSE_RANK,ROW_NUMBER.sql
54 lines (46 loc) · 1.79 KB
/
1.WindowingFunction-RANK,DENSE_RANK,ROW_NUMBER.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
use world;
#RANK, DENSE_RANK, ROW_NUMBER
#jiski slary zyaya usko top rank
#RANK===GIVE SAME RANK TO SAME SALARY,skip numbers in rank after assigning same rnk to same salary,rank over coln
select emp_id, emp_name ,department_id, salary,
rank() OVER(order by salary desc) as rnk
from emp;
##DENSE RANK== two peple with same slary get same rank,dense rank dont skip number like rank
select emp_id, emp_name ,department_id, salary
,RANK() OVER(order by salary desc) as rnk
,DENSE_RANK() OVER(order by salary desc) as dens_rnk
from emp;
use world;
## give different trank to same nos
select emp_id, emp_name ,department_id, salary
,RANK() OVER(order by salary desc) as rnk
,DENSE_RANK() OVER(order by salary desc) as dens_rnk
,row_number() OVER(order by salary desc) as rows_number
from emp;
##IF WANT DEPARTMENT WISE RANK,ADD A CLAUSE PARTITION BY
select emp_id, emp_name ,department_id, salary
,RANK() OVER(partition by department_id ORDER by salary desc) as rnk
,DENSE_RANK() OVER(partition by department_id order by salary desc) as dens_rnk
,row_number() OVER(partition by department_id order by salary desc) as rows_number
from emp;
##IF WANT DEPARTMENT WISE HIGHEST SALARY,ADD PARTITION BY DEPARTMENT
select * from (
select emp_id, emp_name ,department_id, salary
,RANK() OVER(partition by department_id ORDER by salary desc) as rnk
from emp ) a
WHERE rnk=1;
#create table emp
#(
#emp_id int,
#emp_name Varchar(20),
#department_id Varchar(20),
#salary int
#);
#INSERT INTO emp values(1,'Ankit',100,10000);
#INSERT INTO emp values(2,'Mohit',100,15000);
#INSERT INTO emp values(3,'Vikas',100,10000);
#INSERT INTO emp values(4,'Rohit',100,5000);
#INSERT INTO emp values(5,'Mudit',200,12000);
#INSERT INTO emp values(6,'Agam',200,12000);
#INSERT INTO emp values(7,'Sanjay',200,9000);
#INSERT INTO emp values(8,'Ashish',200,5000);