Satish Yellanki August 2107 AM
Satish Yellanki August 2107 AM
Sathish Yellanki
.
SQL> cl scr
SQL> SELECT * FROM Emp;
EMPNO ENAME
COMM
DEPTNO
---------- ---------- ---------7839 KING
10
7698 BLAKE
30
7782 CLARK
10
7566 JONES
20
7654 MARTIN
1400
30
7499 ALLEN
300
30
7844 TURNER
0
30
7900 JAMES
30
7521 WARD
500
30
7902 FORD
20
7369 SMITH
20
7788 SCOTT
20
7876 ADAMS
20
7934 MILLER
10
JOB
MGR HIREDATE
SAL
17-NOV-81
5000
MANAGER
7839 01-MAY-81
2850
MANAGER
7839 09-JUN-81
2450
MANAGER
7839 02-APR-81
2975
SALESMAN
7698 28-SEP-81
1250
SALESMAN
7698 20-FEB-81
1600
SALESMAN
7698 08-SEP-81
1500
CLERK
7698 03-DEC-81
950
SALESMAN
7698 22-FEB-81
1250
ANALYST
7566 03-DEC-81
3000
CLERK
7902 17-DEC-80
800
ANALYST
7566 09-DEC-82
3000
CLERK
7788 12-JAN-83
1100
CLERK
7782 23-JAN-82
1300
14 rows selected.
SQL>
2
3
4
DEPTNO
---------10
10
10
20
20
20
30
30
30
JOB
SALSUM
--------- ---------CLERK
1300
MANAGER
2450
PRESIDENT
5000
ANALYST
6000
CLERK
1900
MANAGER
2975
CLERK
950
MANAGER
2850
SALESMAN
5600
9 rows selected.
SQL> cl scr
SQL>
2
3
4
5
6
7
8
9
10
11
SELECT
EName,
Deptno,
Sal,
RANK()
OVER
(
ORDER BY Sal
) EmpRank
FROM Emp
ORDER BY Emprank;
ENAME
DEPTNO
SAL
EMPRANK
---------- ---------- ---------- ---------SMITH
20
800
1
30
20
30
30
10
30
30
10
30
20
20
20
10
950
1100
1250
1250
1300
1500
1600
2450
2850
2975
3000
3000
5000
2
3
4
4
6
7
8
9
10
11
12
12
14
14 rows selected.
SQL> ED
Wrote file afiedt.buf
1
2
3
4
5
6
7
8
9
10
11*
SQL>
SELECT
EName,
Deptno,
Sal,
DENSE_RANK()
OVER
(
ORDER BY Sal
) EmpRank
FROM Emp
ORDER BY Emprank
/
ENAME
DEPTNO
SAL
EMPRANK
---------- ---------- ---------- ---------SMITH
20
800
1
JAMES
30
950
2
ADAMS
20
1100
3
WARD
30
1250
4
MARTIN
30
1250
4
MILLER
10
1300
5
TURNER
30
1500
6
ALLEN
30
1600
7
CLARK
10
2450
8
BLAKE
30
2850
9
JONES
20
2975
10
FORD
20
3000
11
20
10
3000
5000
11
12
14 rows selected.
SQL> ED
Wrote file afiedt.buf
1
2
3
4
5
6
7
8
9
10
11*
SQL>
SELECT
EName,
Deptno,
Sal,
RANK()
OVER
(
ORDER BY Sal DESC
) EmpRank
FROM Emp
ORDER BY Emprank
/
ENAME
DEPTNO
SAL
EMPRANK
---------- ---------- ---------- ---------KING
10
5000
1
SCOTT
20
3000
2
FORD
20
3000
2
JONES
20
2975
4
BLAKE
30
2850
5
CLARK
10
2450
6
ALLEN
30
1600
7
TURNER
30
1500
8
MILLER
10
1300
9
WARD
30
1250
10
MARTIN
30
1250
10
ADAMS
20
1100
12
JAMES
30
950
13
SMITH
20
800
14
14 rows selected.
SQL> SELECT
2 ROWNUM, E1.*
3 FROM
4
(
5
SELECT
6
EName,
Deptno,
Sal,
DENSE_RANK()
OVER
(
ORDER BY Sal DESC
) EmpRank
FROM Emp
ORDER BY EmpRank
) E1
ORDER BY ROWNUM;
ROWNUM
---------1
2
3
4
5
6
7
8
9
10
11
12
13
14
ENAME
DEPTNO
SAL
EMPRANK
---------- ---------- ---------- ---------KING
10
5000
1
SCOTT
20
3000
2
FORD
20
3000
2
JONES
20
2975
3
BLAKE
30
2850
4
CLARK
10
2450
5
ALLEN
30
1600
6
TURNER
30
1500
7
MILLER
10
1300
8
WARD
30
1250
9
MARTIN
30
1250
9
ADAMS
20
1100
10
JAMES
30
950
11
SMITH
20
800
12
14 rows selected.
SQL>
2
3
4
5
6
7
8
9
10
11
SELECT
DENSE_RANK()
OVER
(
ORDER BY Ename
) RollNo,
EName,
Deptno,
Sal
FROM Emp
ORDER BY RollNo;
ROLLNO ENAME
DEPTNO
SAL
---------- ---------- ---------- ---------1 ADAMS
20
1100
ALLEN
BLAKE
CLARK
FORD
JAMES
JONES
KING
MARTIN
MILLER
SCOTT
SMITH
TURNER
WARD
30
30
10
20
30
20
10
30
10
20
20
30
30
1600
2850
2450
3000
950
2975
5000
1250
1300
3000
800
1500
1250
14 rows selected.
SQL> INSERT INTO Emp(Empno, Ename, Deptno, Sal)
2 VALUES(7935, 'SURESH', 30, 2000);
1 row created.
SQL> INSERT INTO Emp(Empno, Ename, Deptno, Sal)
2 VALUES(7936, 'SMITH', 30, 2000);
1 row created.
SQL> INSERT INTO Emp(Empno, Ename, Deptno, Sal)
2 VALUES(7937, 'SMITH', 10, 2000);
1 row created.
SQL>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT
DENSE_RANK()
OVER
(
ORDER BY Ename
) RollNo,
EName,
Deptno,
Sal
FROM Emp
ORDER BY RollNo;SELECT
DENSE_RANK()
OVER
(
ORDER BY Ename
) RollNo,
EName,
Deptno,
Sal
FROM Emp
ORDER BY RollNo
SELECT
DENSE_RANK()
OVER
(
ORDER BY Ename
) RollNo,
EName,
Deptno,
Sal
FROM Emp
ORDER BY RollNo;
ROLLNO
---------1
2
3
4
5
6
7
8
9
10
11
12
12
12
13
14
15
ENAME
DEPTNO
SAL
---------- ---------- ---------ADAMS
20
1100
ALLEN
30
1600
BLAKE
30
2850
CLARK
10
2450
FORD
20
3000
JAMES
30
950
JONES
20
2975
KING
10
5000
MARTIN
30
1250
MILLER
10
1300
SCOTT
20
3000
SMITH
20
800
SMITH
30
2000
SMITH
10
2000
SURESH
30
2000
TURNER
30
1500
WARD
30
1250
17 rows selected.
SQL> ED
Wrote file afiedt.buf
1
2
SELECT
DENSE_RANK()
OVER
(
ORDER BY Ename, Empno
) RollNo,
EName,
Deptno,
Sal
FROM Emp
ORDER BY RollNo
/
ROLLNO
---------1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ENAME
DEPTNO
SAL
---------- ---------- ---------ADAMS
20
1100
ALLEN
30
1600
BLAKE
30
2850
CLARK
10
2450
FORD
20
3000
JAMES
30
950
JONES
20
2975
KING
10
5000
MARTIN
30
1250
MILLER
10
1300
SCOTT
20
3000
SMITH
20
800
SMITH
30
2000
SMITH
10
2000
SURESH
30
2000
TURNER
30
1500
WARD
30
1250
17 rows selected.
SQL> ROLLBACK;
Rollback complete.
SQL> cl scr
SQL>
2
3
4
5
6
7
SELECT
DENSE_RANK()
OVER
(
ORDER BY Ename
) RollNo,
EName,
Sal,
DENSE_RANK()
OVER
(
ORDER BY Sal DESC
) RankSal,
HireDate,
DENSE_RANK()
OVER
(
ORDER BY HireDate
) SeniorRank,
DENSE_RANK()
OVER
(
ORDER BY HireDate DESC
) JuniorRank
FROM Emp
ORDER BY RollNo;
ROLLNO
JUNIORRANK
----------1
1
2
12
3
9
4
8
5
4
6
4
7
10
8
5
9
6
10
3
11
2
ENAME
SAL
RANKSAL HIREDATE
SENIORRANK
1100
10 12-JAN-83
13
ALLEN
1600
6 20-FEB-81
BLAKE
2850
4 01-MAY-81
CLARK
2450
5 09-JUN-81
FORD
3000
2 03-DEC-81
10
JAMES
950
11 03-DEC-81
10
JONES
2975
3 02-APR-81
KING
5000
1 17-NOV-81
MARTIN
1250
9 28-SEP-81
MILLER
1300
8 23-JAN-82
11
SCOTT
3000
2 09-DEC-82
12
800
12 17-DEC-80
13 TURNER
1500
7 08-SEP-81
14 WARD
1250
9 22-FEB-81
13
7
11
14 rows selected.
SQL> cl scr
SQL>
2
3
4
5
6
7
8
9
10
11
SELECT
TO_CHAR(HireDate, 'YYYY') "Year",
SUM(Sal),
DENSE_RANK()
OVER
(
ORDER BY SUM(Sal) DESC
) YearRank
FROM Emp
GROUP BY TO_CHAR(HireDate, 'YYYY')
ORDER BY YearRank;
Year
SUM(SAL)
YEARRANK
---- ---------- ---------1981
22825
1
1982
4300
2
1983
1100
3
1980
800
4
SQL> cl scr
SQL> SELECT ROWNUM, E1.*
2 FROM
3
(
4
SELECT
EName, Deptno, Sal,
5
DENSE_RANK()
6
OVER
7
(
8
ORDER BY Sal DESC
9
) EmpRank
10
FROM Emp
11
GROUP BY Deptno, EName, Sal
12
ORDER BY EmpRank
13
) E1
14 WHERE E1.EmpRank <= 5
ORDER BY ROWNUM;
ROWNUM
---------1
2
3
4
5
6
ENAME
DEPTNO
SAL
EMPRANK
---------- ---------- ---------- ---------KING
10
5000
1
FORD
20
3000
2
SCOTT
20
3000
2
JONES
20
2975
3
BLAKE
30
2850
4
CLARK
10
2450
5
6 rows selected.
SQL> ED
Wrote file afiedt.buf
1 SELECT ROWNUM, E1.*
2 FROM
3
(
4
SELECT
EName, Deptno, Sal,
5
DENSE_RANK()
6
OVER
7
(
8
ORDER BY Sal DESC
9
) EmpRank
10
FROM Emp
11
GROUP BY Deptno, EName, Sal
12
ORDER BY EmpRank
13
) E1
14 WHERE E1.EmpRank &GiveFilter
15* ORDER BY ROWNUM
SQL> /
Enter value for givefilter: = 1
ROWNUM ENAME
DEPTNO
SAL
EMPRANK
---------- ---------- ---------- ---------- ---------1 KING
10
5000
1
SQL> /
Enter value for givefilter: = 2
ROWNUM
---------1
2
ENAME
DEPTNO
SAL
EMPRANK
---------- ---------- ---------- ---------FORD
20
3000
2
SCOTT
20
3000
2
ENAME
DEPTNO
SAL
EMPRANK
---------- ---------- ---------- ---------KING
10
5000
1
FORD
20
3000
2
SCOTT
20
3000
2
JONES
20
2975
3
BLAKE
30
2850
4
CLARK
10
2450
5
6 rows selected.
SQL> /
Enter value for givefilter: IN(1, 4, 7)
ROWNUM
---------1
2
3
ENAME
DEPTNO
SAL
EMPRANK
---------- ---------- ---------- ---------KING
10
5000
1
BLAKE
30
2850
4
TURNER
30
1500
7
SQL> /
Enter value for givefilter: BETWEEN 1 AND 5
ROWNUM
---------1
2
3
4
5
6
ENAME
DEPTNO
SAL
EMPRANK
---------- ---------- ---------- ---------KING
10
5000
1
FORD
20
3000
2
SCOTT
20
3000
2
JONES
20
2975
3
BLAKE
30
2850
4
CLARK
10
2450
5
6 rows selected.
SQL> /
Enter value for givefilter: BETWEEN 6 AND 10
ROWNUM
---------1
2
3
4
ENAME
DEPTNO
SAL
EMPRANK
---------- ---------- ---------- ---------ALLEN
30
1600
6
TURNER
30
1500
7
MILLER
10
1300
8
MARTIN
30
1250
9
30
20
1250
1100
9
10
6 rows selected.
SQL> ED
Wrote file afiedt.buf
1 SELECT ROWNUM, E1.*
2 FROM
3
(
4
SELECT
EName, Deptno, Sal,
5
DENSE_RANK()
6
OVER
7
(
8
ORDER BY Sal &GiveOrder
9
) EmpRank
10
FROM Emp
11
GROUP BY Deptno, EName, Sal
12
ORDER BY EmpRank
13
) E1
14 WHERE E1.EmpRank &GiveFilter
15* ORDER BY ROWNUM
SQL> /
Enter value for giveorder: DESC
Enter value for givefilter: = 1
ROWNUM ENAME
DEPTNO
SAL
EMPRANK
---------- ---------- ---------- ---------- ---------1 KING
10
5000
1
SQL> /
Enter value for giveorder: ASC
Enter value for givefilter: = 1
ROWNUM ENAME
DEPTNO
SAL
EMPRANK
---------- ---------- ---------- ---------- ---------1 SMITH
20
800
1
SQL> /
Enter value for giveorder: DESC
Enter value for givefilter: <= 5
ROWNUM ENAME
DEPTNO
SAL
EMPRANK
---------- ---------- ---------- ---------- ---------1 KING
10
5000
1
FORD
SCOTT
JONES
BLAKE
CLARK
20
20
20
30
10
3000
3000
2975
2850
2450
2
2
3
4
5
6 rows selected.
SQL> /
Enter value for giveorder: ASC
Enter value for givefilter: <= 5
ROWNUM
---------1
2
3
4
5
6
ENAME
DEPTNO
SAL
EMPRANK
---------- ---------- ---------- ---------SMITH
20
800
1
JAMES
30
950
2
ADAMS
20
1100
3
MARTIN
30
1250
4
WARD
30
1250
4
MILLER
10
1300
5
6 rows selected.
SQL> ED
Wrote file afiedt.buf
1 SELECT ROWNUM, E1.*
2 FROM
3
(
4
SELECT
EName, Deptno, &&GiveDim,
5
DENSE_RANK()
6
OVER
7
(
8
ORDER BY &&GiveDim &GiveOrder
9
) EmpRank
10
FROM Emp
11
GROUP BY Deptno, EName, &&GiveDim
12
ORDER BY EmpRank
13
) E1
14 WHERE E1.EmpRank &GiveFilter
15* ORDER BY ROWNUM
SQL> /
Enter value for givedim: Sal
Enter value for giveorder: DESC
Enter value for givefilter: = 1
ENAME
DEPTNO
SAL
EMPRANK
---------- ---------- ---------- ---------KING
10
5000
1
FORD
20
3000
2
SCOTT
20
3000
2
JONES
20
2975
3
BLAKE
30
2850
4
CLARK
10
2450
5
6 rows selected.
SQL> /
Enter value for giveorder: ASC
Enter value for givefilter: <= 5
ROWNUM
---------1
2
3
4
5
6
ENAME
DEPTNO
SAL
EMPRANK
---------- ---------- ---------- ---------SMITH
20
800
1
JAMES
30
950
2
ADAMS
20
1100
3
MARTIN
30
1250
4
WARD
30
1250
4
MILLER
10
1300
5
6 rows selected.
SQL> DEFINE GiveDim = HireDate
SQL> /
Enter value for giveorder: ASC
Enter value for givefilter: = 1
ENAME
DEPTNO HIREDATE
EMPRANK
---------- ---------- --------- ---------SMITH
20 17-DEC-80
1
ALLEN
30 20-FEB-81
2
WARD
30 22-FEB-81
3
JONES
20 02-APR-81
4
BLAKE
30 01-MAY-81
5
SQL> /
Enter value for giveorder: DESC
Enter value for givefilter: <= 5
ROWNUM
---------1
2
3
4
5
6
ENAME
DEPTNO HIREDATE
EMPRANK
---------- ---------- --------- ---------ADAMS
20 12-JAN-83
1
SCOTT
20 09-DEC-82
2
MILLER
10 23-JAN-82
3
FORD
20 03-DEC-81
4
JAMES
30 03-DEC-81
4
KING
10 17-NOV-81
5
6 rows selected.
SQL> SPOOL OFF