Académique Documents
Professionnel Documents
Culture Documents
DNAME
-------------ACCOUNTING
RESEARCH
SALES
OPERATIONS
LOC
------------NEW YORK
DALLAS
CHICAGO
BOSTON
SQL> cl scr
SQL> ed
Wrote file afiedt.buf
1 SELECT *
2 FROM (SELECT Deptno, Dname, Loc
3*
FROM Dept)
SQL> /
DEPTNO
---------10
20
30
40
DNAME
-------------ACCOUNTING
RESEARCH
SALES
OPERATIONS
LOC
------------NEW YORK
DALLAS
CHICAGO
BOSTON
SQL> ed
Wrote file afiedt.buf
1 SELECT Ename, Sal, Deptno, AnnSal
2 FROM (SELECT Ename, Sal, Deptno, Sal * 12 AnnSal
3*
FROM Emp)
SQL> /
ENAME
SAL
DEPTNO
ANNSAL
---------- ---------- ---------- ---------KING
5000
10
60000
BLAKE
2850
30
34200
CLARK
2450
10
29400
JONES
2975
20
35700
MARTIN
1250
30
15000
ALLEN
1600
30
19200
TURNER
1500
30
18000
JAMES
950
30
11400
WARD
1250
30
15000
FORD
3000
20
36000
SMITH
800
20
9600
ENAME
SAL
DEPTNO
ANNSAL
---------- ---------- ---------- ---------SCOTT
3000
20
36000
ADAMS
1100
20
13200
MILLER
1300
10
15600
14 rows selected.
SQL> cl scr
ENAME
SAL
DEPTNO SUM(SAL)
---------- ---------- ---------- ---------FORD
3000
20
3000
KING
5000
10
5000
WARD
1250
30
1250
ADAMS
1100
20
1100
ALLEN
1600
30
1600
BLAKE
2850
30
2850
CLARK
2450
10
2450
JAMES
950
30
950
JONES
2975
20
2975
SCOTT
3000
20
3000
SMITH
800
20
800
ENAME
SAL
DEPTNO SUM(SAL)
---------- ---------- ---------- ---------MARTIN
1250
30
1250
MILLER
1300
10
1300
TURNER
1500
30
1500
14 rows selected.
SQL> ed
Wrote file afiedt.buf
1 SELECT Ename, Sal, E.Deptno, SalSum
2 FROM Emp E, (SELECT Deptno, SUM(Sal) SalSum
3
FROM Emp
4
GROUP BY Deptno
5
) E1
6* WHERE E.Deptno = E1.Deptno
SQL> ed
Wrote file afiedt.buf
1
2
3*
4
DEPTNO
SALSUM
---------- ---------10
8750
20
10875
30
9400
ENAME
SAL
DEPTNO
SALAVG
---------- ---------- ---------- ---------MILLER
1300
10 2916.66667
CLARK
2450
10 2916.66667
KING
5000
10 2916.66667
ADAMS
1100
20
2175
SCOTT
3000
20
2175
SMITH
800
20
2175
FORD
3000
20
2175
JONES
2975
20
2175
WARD
1250
30 1566.66667
JAMES
950
30 1566.66667
TURNER
1500
30 1566.66667
ENAME
SAL
DEPTNO
SALAVG
---------- ---------- ---------- ---------ALLEN
1600
30 1566.66667
MARTIN
1250
30 1566.66667
BLAKE
2850
30 1566.66667
14 rows selected.
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5
6
7
8
9
10*
SQL>
ENAME
SAL
DEPTNO
SALSUM
SALAVG
DCOUNT
---------- ---------- ---------- ---------- ---------- ---------MILLER
1300
10
8750 2916.66667
3
CLARK
2450
10
8750 2916.66667
3
KING
5000
10
8750 2916.66667
3
ADAMS
1100
20
10875
2175
5
SCOTT
3000
20
10875
2175
5
SMITH
800
20
10875
2175
5
FORD
3000
20
10875
2175
5
JONES
2975
20
10875
2175
5
WARD
1250
30
9400 1566.66667
6
JAMES
950
30
9400 1566.66667
6
TURNER
1500
30
9400 1566.66667
6
ENAME
SAL
DEPTNO
SALSUM
SALAVG
DCOUNT
---------- ---------- ---------- ---------- ---------- ---------ALLEN
1600
30
9400 1566.66667
6
MARTIN
1250
30
9400 1566.66667
6
BLAKE
2850
30
9400 1566.66667
6
14 rows selected.
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT
Ename,
Sal,
E.Deptno,
SalSum,
SalSum - Sal DiffSal,
SalAvg,
ABS(ROUND(SalSum - SalAvg)) DiffSalAvg
DCount
FROM Emp E, (SELECT
Deptno,
SUM(Sal) SalSum,
AVG(Sal) SalAvg,
COUNT(*) DCount
FROM Emp
GROUP BY Deptno
17
) E1
18* WHERE E.Deptno = E1.Deptno
SQL> /
DCount
*
ERROR at line 9:
ORA-00923: FROM keyword not found where expected
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18*
SQL>
SELECT
Ename,
Sal,
E.Deptno,
SalSum,
SalSum - Sal DiffSal,
SalAvg,
ABS(ROUND(SalSum - SalAvg)) DiffSalAvg,
DCount
FROM Emp E, (SELECT
Deptno,
SUM(Sal) SalSum,
AVG(Sal) SalAvg,
COUNT(*) DCount
FROM Emp
GROUP BY Deptno
) E1
WHERE E.Deptno = E1.Deptno
/
ENAME
SAL
DEPTNO
SALSUM
DIFFSAL
SALAVG DIFFSALAVG
---------- ---------- ---------- ---------- ---------- ---------- ---------DCOUNT
---------MILLER
1300
10
8750
7450 2916.66667
5833
3
CLARK
2450
10
8750
6300 2916.66667
5833
5000
10
8750
3750 2916.66667
5833
3
KING
3
ENAME
SAL
DEPTNO
SALSUM
DIFFSAL
SALAVG DIFFSALAVG
---------- ---------- ---------- ---------- ---------- ---------- ---------DCOUNT
---------ADAMS
1100
20
10875
9775
2175
8700
5
SCOTT
3000
20
10875
7875
2175
8700
800
20
10875
10075
2175
8700
5
SMITH
5
ENAME
SAL
DEPTNO
SALSUM
DIFFSAL
SALAVG DIFFSALAVG
---------- ---------- ---------- ---------- ---------- ---------- ---------DCOUNT
---------FORD
3000
20
10875
7875
2175
8700
5
JONES
2975
20
10875
1250
30
9400
7900
2175
8700
8150 1566.66667
7833
5
WARD
6
ENAME
SAL
DEPTNO
SALSUM
DIFFSAL
SALAVG DIFFSALAVG
---------- ---------- ---------- ---------- ---------- ---------- ---------DCOUNT
---------JAMES
950
30
9400
8450 1566.66667
7833
6
TURNER
1500
30
9400
7900 1566.66667
7833
1600
30
9400
7800 1566.66667
7833
6
ALLEN
6
ENAME
SAL
DEPTNO
SALSUM
DIFFSAL
SALAVG DIFFSALAVG
---------- ---------- ---------- ---------- ---------- ---------- ---------DCOUNT
---------MARTIN
1250
30
9400
8150 1566.66667
7833
6
BLAKE
2850
30
9400
6
14 rows selected.
SQL> cl scr
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
Ename,
Sal,
E.Deptno,
Dname,
Loc,
SalSum,
FROM Emp E, (SELECT
Deptno,
SUM(Sal) SalSum
FROM Emp
GROUP BY Deptno
) E1, Dept D
WHERE E.Deptno = E1.Deptno AND
6550 1566.66667
7833
SELECT
Ename,
Sal,
E.Deptno,
Dname,
Loc,
SalSum
FROM Emp E, (SELECT
Deptno,
SUM(Sal) SalSum
FROM Emp
GROUP BY Deptno
) E1, Dept D
WHERE E.Deptno = E1.Deptno AND
E.Deptno = D.Deptno
/
ENAME
SAL
DEPTNO DNAME
---------- ---------- ---------- -------------MILLER
1300
10 ACCOUNTING
CLARK
2450
10 ACCOUNTING
KING
5000
10 ACCOUNTING
ADAMS
1100
20 RESEARCH
SCOTT
3000
20 RESEARCH
SMITH
800
20 RESEARCH
FORD
3000
20 RESEARCH
JONES
2975
20 RESEARCH
WARD
1250
30 SALES
JAMES
950
30 SALES
TURNER
1500
30 SALES
LOC
SALSUM
------------- ---------NEW YORK
8750
NEW YORK
8750
NEW YORK
8750
DALLAS
10875
DALLAS
10875
DALLAS
10875
DALLAS
10875
DALLAS
10875
CHICAGO
9400
CHICAGO
9400
CHICAGO
9400
ENAME
SAL
DEPTNO DNAME
---------- ---------- ---------- -------------ALLEN
1600
30 SALES
MARTIN
1250
30 SALES
BLAKE
2850
30 SALES
LOC
SALSUM
------------- ---------CHICAGO
9400
CHICAGO
9400
CHICAGO
9400
14 rows selected.
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5
6
7
SELECT
Ename,
Sal,
Grade,
E.Deptno,
Dname,
Loc,
8
9
10
11
12
13
14
15
16
17*
SQL>
SalSum
FROM Emp E, (SELECT
Deptno,
SUM(Sal) SalSum
FROM Emp
GROUP BY Deptno
) E1, Dept D, SalGrade S
WHERE E.Deptno = E1.Deptno AND
E.Deptno = D.Deptno AND
E.Sal BETWEEN LoSal AND HiSal
/
ENAME
SAL
GRADE
DEPTNO DNAME
LOC
---------- ---------- ---------- ---------- -------------- ------------SALSUM
---------MILLER
1300
2
10 ACCOUNTING
NEW YORK
8750
CLARK
2450
10 ACCOUNTING
NEW YORK
5000
10 ACCOUNTING
NEW YORK
8750
KING
8750
ENAME
SAL
GRADE
DEPTNO DNAME
LOC
---------- ---------- ---------- ---------- -------------- ------------SALSUM
---------SMITH
800
1
20 RESEARCH
DALLAS
10875
ADAMS
1100
20 RESEARCH
DALLAS
2975
20 RESEARCH
DALLAS
10875
JONES
10875
ENAME
SAL
GRADE
DEPTNO DNAME
LOC
---------- ---------- ---------- ---------- -------------- ------------SALSUM
---------FORD
3000
4
20 RESEARCH
DALLAS
10875
SCOTT
3000
20 RESEARCH
DALLAS
950
30 SALES
CHICAGO
10875
JAMES
9400
ENAME
SAL
GRADE
DEPTNO DNAME
LOC
---------- ---------- ---------- ---------- -------------- ------------SALSUM
---------MARTIN
1250
2
30 SALES
CHICAGO
9400
WARD
1250
30 SALES
CHICAGO
1600
30 SALES
CHICAGO
9400
ALLEN
9400
ENAME
SAL
GRADE
DEPTNO DNAME
LOC
---------- ---------- ---------- ---------- -------------- ------------SALSUM
---------TURNER
1500
3
30 SALES
CHICAGO
9400
BLAKE
2850
30 SALES
9400
14 rows selected.
SQL> cl scr
SQL> SELECT E.Ename, E.Sal , E.Deptno, E1.SalAvg
2 FROM Emp E, (SELECT Deptno, AVG(Sal) SalAvg
3
FROM Emp
4
GROUP BY Deptno) E1
5 WHERE E.Deptno = E1.Deptno;
ENAME
SAL
DEPTNO
SALAVG
---------- ---------- ---------- ---------MILLER
1300
10 2916.66667
CLARK
2450
10 2916.66667
KING
5000
10 2916.66667
ADAMS
1100
20
2175
SCOTT
3000
20
2175
SMITH
800
20
2175
FORD
3000
20
2175
JONES
2975
20
2175
WARD
1250
30 1566.66667
JAMES
950
30 1566.66667
TURNER
1500
30 1566.66667
ENAME
SAL
DEPTNO
SALAVG
---------- ---------- ---------- ---------ALLEN
1600
30 1566.66667
MARTIN
1250
30 1566.66667
BLAKE
2850
30 1566.66667
14 rows selected.
SQL>
2
3
4
5
6
ENAME
SAL
DEPTNO
SALAVG
---------- ---------- ---------- ----------
CHICAGO
KING
SCOTT
FORD
JONES
ALLEN
BLAKE
5000
3000
3000
2975
1600
2850
10 2916.66667
20
2175
20
2175
20
2175
30 1566.66667
30 1566.66667
6 rows selected.
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5*
SQL>
ENAME
SAL JOB
DEPTNO
SALAVG
---------- ---------- --------- ---------- ---------SCOTT
3000 ANALYST
20
3000
FORD
3000 ANALYST
20
3000
MILLER
1300 CLERK
10
1037.5
ADAMS
1100 CLERK
20
1037.5
SMITH
800 CLERK
20
1037.5
JAMES
950 CLERK
30
1037.5
JONES
2975 MANAGER
20 2758.33333
CLARK
2450 MANAGER
10 2758.33333
BLAKE
2850 MANAGER
30 2758.33333
KING
5000 PRESIDENT
10
5000
WARD
1250 SALESMAN
30
1400
ENAME
SAL JOB
DEPTNO
SALAVG
---------- ---------- --------- ---------- ---------TURNER
1500 SALESMAN
30
1400
ALLEN
1600 SALESMAN
30
1400
MARTIN
1250 SALESMAN
30
1400
14 rows selected.
SQL> ed
Wrote file afiedt.buf
1 SELECT E.Ename, E.Sal , E.Job, E.Deptno, E1.SalAvg
2 FROM Emp E, (SELECT Job, AVG(Sal) SalAvg
3
FROM Emp
4
GROUP BY Job) E1
5 WHERE E.Job = E1.Job AND
6* E1.Sal = SalAvg
SQL> /
E1.Sal = SalAvg
*
ERROR at line 6:
ORA-00904: "E1"."SAL": invalid identifier
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5
6*
SQL>
ENAME
SAL JOB
DEPTNO
SALAVG
---------- ---------- --------- ---------- ---------SCOTT
3000 ANALYST
20
3000
FORD
3000 ANALYST
20
3000
KING
5000 PRESIDENT
10
5000
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5
6*
SQL>
SQL>
2
3
4
5
6
7
8
9
ENAME
SAL
DEPTNO DEPTAVGSAL DIFFSALAVG
---------- ---------- ---------- ---------- ---------KING
5000
10
2916.67
2083
CLARK
2450
10
2916.67
-467
MILLER
1300
10
2916.67
-1617
JONES
2975
20
2175
800
FORD
3000
20
2175
825
SMITH
800
20
2175
-1375
SCOTT
3000
20
2175
825
ADAMS
1100
20
2175
-1075
BLAKE
2850
30
1566.67
1283
MARTIN
1250
30
1566.67
-317
ALLEN
1600
30
1566.67
33
ENAME
SAL
DEPTNO DEPTAVGSAL DIFFSALAVG
---------- ---------- ---------- ---------- ---------TURNER
1500
30
1566.67
-67
JAMES
950
30
1566.67
-617
WARD
1250
30
1566.67
-317
14 rows selected.
SQL> cl scr
SQL> SET AUTOTRACE ON EXPLAIN
SQL>
2
3
4
5
6
7
DEPTNO
---------20
30
DNAME
STAFF
-------------- ---------RESEARCH
5
SALES
6
Execution Plan
---------------------------------------------------------0
SELECT STATEMENT Optimizer=ALL_ROWS (Cost=8 Card=14 Bytes=67
2)
1
2
0
1
3
4
5
6
1
3
4
5
SQL>
2
3
4
5
DEPTNO DNAME
STAFF
---------- -------------- ---------30 SALES
6
Execution Plan
---------------------------------------------------------0
SELECT STATEMENT Optimizer=ALL_ROWS (Cost=8 Card=14 Bytes=49
0)
1
2
3
4
0
1
2
3
FILTER
SORT (GROUP BY) (Cost=8 Card=14 Bytes=490)
HASH JOIN (Cost=7 Card=14 Bytes=490)
TABLE ACCESS (FULL) OF 'DEPT' (TABLE) (Cost=3 Card=4
Bytes=88)
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5*
SQL>
DEPTNO
---------20
30
DNAME
STAFF
-------------- ---------RESEARCH
5
SALES
6
Execution Plan
---------------------------------------------------------0
SELECT STATEMENT Optimizer=ALL_ROWS (Cost=8 Card=14 Bytes=49
0)
1
2
3
4
0
1
2
3
FILTER
SORT (GROUP BY) (Cost=8 Card=14 Bytes=490)
HASH JOIN (Cost=7 Card=14 Bytes=490)
TABLE ACCESS (FULL) OF 'DEPT' (TABLE) (Cost=3 Card=4
Bytes=88)
SQL> cl scr
SQL> SET AUTOTRACE ON EXPLAIN
SQL> SET AUTOTRACE OFF EXPLAIN
SQL> cl scr
SQL> SELECT Deptno, SUM(Sal)
2 FROM Emp
3 GROUP BY Deptno;
DEPTNO SUM(SAL)
---------- ---------10
8750
20
10875
30
9400
SQL>
2
3
4
5
6
DEPTNO SUM(SAL)
Salary%
---------- ---------- ---------10
8750 30.1464255
20
10875 37.4677003
30
9400 32.3858742
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5*
SQL>
SQL>
2
3
4
5
6
YEAR SUM(SAL)
Salary%
---- ---------- ---------1980
800
2.76
1981
22825
78.64
1982
4300
14.81
1983
1100
3.79
SQL> cl scr
SQL> SELECT COUNT(*) FROM Emp;
COUNT(*)
---------14
SQL> SELECT COUNT(*) FROM Dept;
COUNT(*)
---------4
SQL> SELECT COUNT(*) FROM SalGrade;
COUNT(*)
---------5
SQL>
2
3
4
5
6
7
8
2
3
4
5
6
7
8
9
10
11
12
E.EmpCount,
D.DeptCount,
S.GradeCnt,
E.EmpCount + D.DeptCount + S.GradeCnt TotalRecCnt
FROM
(SELECT COUNT(*) EmpCount
FROM Emp) E,
(SELECT COUNT(*) DeptCount
FROM Dept) D,
(SELECT COUNT(*) GradeCnt
FROM SalGrade) S;
SELECT
E.EmpCount,
D.DeptCount,
S.GradeCnt,
E.EmpCount + D.DeptCount + S.GradeCnt TotalRecCnt,
GREATEST(E.EmpCount, D.DeptCount, S.GradeCnt) HighRecinTab,
LEAST(E.EmpCount, D.DeptCount, S.GradeCnt) LowRecinTab
FROM
(SELECT COUNT(*) EmpCount
FROM Emp) E,
(SELECT COUNT(*) DeptCount
FROM Dept) D,
(SELECT COUNT(*) GradeCnt
FROM SalGrade) S;
Department Number
----------------10
20
30
%Employees
---------21.4285714
35.7142857
42.8571429
%Salary
---------30.1464255
37.4677003
32.3858742
SQL> cl scr
SQL> SELECT
2 Ename, Deptno, Sal,
3 (SELECT SUM(Sal) FROM Emp) OrgSalSum
4 FROM Emp;
ENAME
DEPTNO
SAL ORGSALSUM
---------- ---------- ---------- ---------KING
10
5000
29025
BLAKE
30
2850
29025
CLARK
10
2450
29025
JONES
20
2975
29025
MARTIN
30
1250
29025
ALLEN
30
1600
29025
TURNER
30
1500
29025
JAMES
30
950
29025
WARD
30
1250
29025
FORD
20
3000
29025
SMITH
20
800
29025
ENAME
DEPTNO
SAL ORGSALSUM
---------- ---------- ---------- ---------SCOTT
20
3000
29025
ADAMS
20
1100
29025
MILLER
10
1300
29025
14 rows selected.
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5
6*
SQL>
SELECT
Ename, Deptno, Sal,
(SELECT SUM(Sal) FROM Emp) OrgSalSum,
(SELECT MAX(Sal) FROM Emp) OrgSalMax,
(SELECT MIN(Sal) FROM Emp) OrgSalMin
FROM Emp
/
ENAME
DEPTNO
SAL ORGSALSUM ORGSALMAX ORGSALMIN
---------- ---------- ---------- ---------- ---------- ---------KING
10
5000
29025
5000
800
BLAKE
30
2850
29025
5000
800
CLARK
10
2450
29025
5000
800
JONES
20
2975
29025
5000
800
MARTIN
30
1250
29025
5000
800
ALLEN
30
1600
29025
5000
800
TURNER
30
1500
29025
5000
800
JAMES
30
950
29025
5000
800
WARD
30
1250
29025
5000
800
FORD
20
3000
29025
5000
800
SMITH
20
800
29025
5000
800
ENAME
DEPTNO
SAL ORGSALSUM ORGSALMAX ORGSALMIN
---------- ---------- ---------- ---------- ---------- ---------SCOTT
20
3000
29025
5000
800
ADAMS
20
1100
29025
5000
800
MILLER
10
1300
29025
5000
800
14 rows selected.
SQL> ed
Wrote file afiedt.buf
1 SELECT
2 Ename, Deptno, Sal,
3 (SELECT SUM(Sal) FROM Emp) OrgSalSum,
4 (SELECT MAX(Sal), MIN(Sal) FROM Emp) OrgSalMax
5* FROM Emp
SQL> /
(SELECT MAX(Sal), MIN(Sal) FROM Emp) OrgSalMax
*
ERROR at line 4:
ORA-00913: too many values
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5*
SQL>
SELECT
Ename, Deptno, Sal,
(SELECT SUM(Sal) FROM Emp) OrgSalSum,
(SELECT MAX(Sal)||' '||MIN(Sal) FROM Emp) OrgSalMax
FROM Emp
/
ENAME
DEPTNO
SAL ORGSALSUM
---------- ---------- ---------- ---------ORGSALMAX
-------------------------------------------------------------------------------KING
10
5000
29025
5000 800
BLAKE
5000 800
30
2850
29025
CLARK
5000 800
10
2450
29025
ENAME
DEPTNO
SAL ORGSALSUM
---------- ---------- ---------- ---------ORGSALMAX
-------------------------------------------------------------------------------JONES
20
2975
29025
5000 800
MARTIN
5000 800
30
1250
29025
ALLEN
5000 800
30
1600
29025
ENAME
DEPTNO
SAL ORGSALSUM
---------- ---------- ---------- ---------ORGSALMAX
-------------------------------------------------------------------------------TURNER
30
1500
29025
5000 800
JAMES
5000 800
30
950
29025
WARD
5000 800
30
1250
29025
ENAME
DEPTNO
SAL ORGSALSUM
---------- ---------- ---------- ---------ORGSALMAX
-------------------------------------------------------------------------------FORD
20
3000
29025
5000 800
SMITH
5000 800
20
800
29025
SCOTT
5000 800
20
3000
29025
ENAME
DEPTNO
SAL ORGSALSUM
---------- ---------- ---------- ---------ORGSALMAX
-------------------------------------------------------------------------------ADAMS
20
1100
29025
5000 800
MILLER
5000 800
10
1300
29025
14 rows selected.
SQL> cl scr
SQL> SELECT Ename, E.Deptno, Sal
2 FROM Emp E
3 WHERE E.Sal > (SELECT AVG(Sal)
4
FROM Emp
5
WHERE E1.Deptno = E.Deptno)
6
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5*
SQL>
ENAME
DEPTNO
SAL
---------- ---------- ---------KING
10
5000
BLAKE
30
2850
JONES
20
2975
ALLEN
30
1600
FORD
20
3000
SCOTT
20
3000
6 rows selected.
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5*
SQL>
ENAME
DEPTNO
SAL
---------- ---------- ---------KING
10
5000
BLAKE
30
2850
JONES
20
2975
ALLEN
30
1600
FORD
20
3000
SCOTT
20
3000
6 rows selected.
SQL> SELECT Ename, E.Deptno, Sal
2 FROM Emp E, (SELECT Deptno, AVG(Sal) SalAvg
3
FROM Emp E1
4
GROUP BY Deptno) E1
5
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5
6*
SQL>
ENAME
DEPTNO
SAL
---------- ---------- ---------KING
10
5000
SCOTT
20
3000
FORD
20
3000
JONES
20
2975
ALLEN
30
1600
BLAKE
30
2850
6 rows selected.
SQL>
2
3
4
5
6
SQL>
2
3
4
5
6
7
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5
6*
SQL>
ENAME
DEPTNO
SAL
SALAVG
---------- ---------- ---------- ---------KING
10
5000 2916.66667
SCOTT
20
3000
2175
FORD
20
3000
2175
JONES
20
2975
2175
ALLEN
30
1600 1566.66667
BLAKE
30
2850 1566.66667
6 rows selected.
SQL>
SQL>
2
3
4
5
ENAME
DEPTNO
SAL
---------- ---------- ---------KING
10
5000
BLAKE
30
2850
JONES
20
2975
ALLEN
30
1600
FORD
20
3000
SCOTT
20
3000
6 rows selected.
Execution Plan
---------------------------------------------------------0
SELECT STATEMENT Optimizer=ALL_ROWS (Cost=6 Card=3 Bytes=99)
1
0 FILTER
2
1
TABLE ACCESS (FULL) OF 'EMP' (TABLE) (Cost=3 Card=1 Byte
s=33)
3
4
1
3
SORT (AGGREGATE)
TABLE ACCESS (FULL) OF 'EMP' (TABLE) (Cost=3 Card=1 By
tes=26)
0
1
3
4
5
1
3
4
SQL> cl scr
SQL> SELECT Empno, Ename, E.Deptno, Sal, MGR
2 FROM Emp E
3 WHERE E.Sal > (SELECT M.Sal
4
FROM Emp M
5
WHERE M.Empno = E.MGR);
EMPNO
---------7902
7788
ENAME
DEPTNO
SAL
MGR
---------- ---------- ---------- ---------FORD
20
3000
7566
SCOTT
20
3000
7566
Execution Plan
---------------------------------------------------------0
SELECT STATEMENT Optimizer=ALL_ROWS (Cost=4 Card=0 Bytes=3)
1
0 FILTER
2
1
TABLE ACCESS (FULL) OF 'EMP' (TABLE) (Cost=3 Card=1 Byte
s=59)
3
ENAME
DEPTNO
SAL
MGR
---------- ---------- ---------- ---------FORD
20
3000
7566
SCOTT
20
3000
7566
DEPTNO
---------10
30
20
SQL>
2
3
4
DNAME
-------------ACCOUNTING
SALES
RESEARCH
DEPTNO
---------10
20
30
DNAME
-------------ACCOUNTING
RESEARCH
SALES
SQL> ed
Wrote file afiedt.buf
1
2
3*
SQL>
---------10
30
10
20
30
30
30
30
30
20
20
-------------ACCOUNTING
SALES
ACCOUNTING
RESEARCH
SALES
SALES
SALES
SALES
SALES
RESEARCH
RESEARCH
DEPTNO
---------20
20
10
DNAME
-------------RESEARCH
RESEARCH
ACCOUNTING
14 rows selected.
SQL> ed
Wrote file afiedt.buf
1
2
3*
SQL>
DEPTNO
---------10
20
30
DNAME
-------------ACCOUNTING
RESEARCH
SALES
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5*
SQL>
DEPTNO
---------10
30
20
DNAME
-------------ACCOUNTING
SALES
RESEARCH
SQL> cl scr
SQL>
2
3
4
5
6
DEPTNO DNAME
---------- -------------40 OPERATIONS
SQL> cl scr
SQL>
2
3
4
5
6
SELECT E.Ename
FROM Emp E
WHERE EXISTS
(SELECT *
FROM Emp E1
WHERE E1.Empno = E.Mgr);
ENAME
---------BLAKE
CLARK
JONES
MARTIN
ALLEN
TURNER
JAMES
WARD
FORD
SMITH
SCOTT
ENAME
---------ADAMS
MILLER
13 rows selected.
SQL> SELECT Ename
2 FROM Emp
3 WHERE MGR IS NOT NULL;
ENAME
---------BLAKE
CLARK
JONES
MARTIN
ALLEN
TURNER
JAMES
WARD
FORD
SMITH
SCOTT
ENAME
---------ADAMS
MILLER
13 rows selected.
SQL> ed
SELECT E.Ename
FROM Emp E
WHERE NOT EXISTS
(SELECT *
FROM Emp E1
WHERE E1.Empno = E.Mgr)
/
ENAME
---------KING
SQL>
2
3
4
5
6
SELECT E.Ename
FROM Emp E
WHERE EXISTS
(SELECT *
FROM Emp E1
WHERE E1.Mgr = E.Empno);
ENAME
---------KING
BLAKE
JONES
FORD
SCOTT
CLARK
6 rows selected.
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5
6*
SQL>
SELECT E.Ename
FROM Emp E
WHERE NOT EXISTS
(SELECT *
FROM Emp E1
WHERE E1.Mgr = E.Empno)
/
ENAME
---------TURNER
WARD
MARTIN
ALLEN
MILLER
SMITH
ADAMS
JAMES
8 rows selected.
SQL> SELECT Ename
2 FROM Emp;
ENAME
---------KING
BLAKE
CLARK
JONES
MARTIN
ALLEN
TURNER
JAMES
WARD
FORD
SMITH
ENAME
---------SCOTT
ADAMS
MILLER
14 rows selected.
SQL> SPOOL OFF