Professional Documents
Culture Documents
SQL> SELECT
2
3
4
MIN(Sal)
FROM Emp
WHERE Deptno = 20;
MIN(SAL)
---------800
SQL>
2
3
4
5
6
7
DEPTNO MIN(SAL)
---------- ---------10
1300
30
950
SQL> cl scr
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5*
SQL>
SELECT
Job,
AVG(Sal)
FROM Emp
GROUP BY Job
/
JOB
AVG(SAL)
--------- ---------ANALYST
3000
CLERK
1037.5
MANAGER 2758.33333
PRESIDENT
5000
SALESMAN
1400
SQL> ed
Wrote file afiedt.buf
1
2
3
4*
SQL>
SELECT
MIN(AVG(Sal))
FROM Emp
GROUP BY Job
/
MIN(AVG(SAL))
------------1037.5
SQL> ed
Wrote file afiedt.buf
JOB
AVG(SAL)
--------- ---------CLERK
1037.5
SQL> ed
Wrote file afiedt.buf
1 SELECT
2
3
4*
SQL> /
MIN(AVG(Sal))
FROM Emp
GROUP BY Job
MIN(AVG(SAL))
------------1037.5
SQL> cl scr
SQL>
2
3
4
5
6
7
JOB
AVG(SAL)
--------- ---------ANALYST
3000
CLERK
1037.5
MANAGER 2758.33333
SALESMAN
1400
SQL> cl scr
SQL> ed
Wrote file afiedt.buf
1 Select Deptno, MIN(Sal)
2 FROM Emp
MAX(AVG(Sal))
FROM Emp
GROUP BY Job);
3* GROUP BY Deptno
SQL> /
DEPTNO MIN(SAL)
---------- ---------10
1300
20
800
30
950
SQL> ed
Wrote file afiedt.buf
1 Select Ename, Deptno, MIN(Sal)
2 FROM Emp
3* GROUP BY Deptno
SQL> /
Select Ename, Deptno, MIN(Sal)
*
ERROR at line 1:
ORA-00979: not a GROUP BY expression
SQL> ed
Wrote file afiedt.buf
1
2
3*
SQL>
ENAME
DEPTNO MIN(SAL)
---------- ---------- ---------KING
10
5000
CLARK
10
2450
MILLER
10
1300
FORD
20
3000
ADAMS
20
1100
JONES
20
2975
SCOTT
20
3000
SMITH
20
800
WARD
30
1250
ALLEN
30
1600
BLAKE
30
2850
ENAME
DEPTNO MIN(SAL)
---------- ---------- ---------JAMES
30
950
MARTIN
30
1250
TURNER
30
1500
14 rows selected.
SQL> cl scr
SQL> SELECT Ename, Sal, Deptno
2 FROM Emp
3 WHERE Sal IN(Select MIN(Sal)
4
FROM Emp
5
GROUP BY Deptno);
ENAME
SAL
DEPTNO
---------- ---------- ---------JAMES
950
30
SMITH
800
20
MILLER
1300
10
SQL> INSERT INTO Emp(Empno, Ename, Deptno, Sal)
2 VALUES(1234, 'SAMPLE01', 20, 950);
1 row created.
SQL> INSERT INTO Emp(Empno, Ename, Deptno, Sal)
2 VALUES(1235, 'SAMPLE02', 20, 1300);
1 row created.
SQL> INSERT INTO Emp(Empno, Ename, Deptno, Sal)
2 VALUES(1236, 'SAMPLE03', 30, 1300);
1 row created.
SQL> SELECT Ename, Sal, Deptno
2 FROM Emp
3 WHERE Sal IN(Select MIN(Sal)
4
FROM Emp
5
GROUP BY Deptno);
ENAME
SAL
DEPTNO
---------- ---------- ---------JAMES
950
30
SMITH
800
20
MILLER
1300
10
SAMPLE01
950
20
SAMPLE02
1300
20
SAMPLE03
1300
30
6 rows selected.
SQL> SELECT Ename, Sal, Deptno
2 FROM Emp
3 WHERE Sal IN(SELECT MAX(Sal)
4
FROM Emp
5
GROUP BY Deptno);
ENAME
SAL
DEPTNO
---------- ---------- ---------KING
5000
10
BLAKE
2850
30
FORD
3000
20
SCOTT
3000
20
SQL> cl scr
SQL> SELECT Ename, Sal , Deptno , Job
2 From Emp
3 Where Sal IN(SELECT MAX(Sal)
4
FROM Emp
5
GROUP BY Job);
ENAME
SAL
DEPTNO JOB
FROM Emp
WHERE De
HIREDATE
--------02-APR-81
03-DEC-81
17-DEC-80
09-DEC-82
12-JAN-83
SQL> Select Sal
2
3
4
5
ptno = 20);
FROM Emp
WHERE HireDate IN(SELECT HireDate
FROM Emp
WHERE De
SAL
---------2975
3000
950
800
3000
1100
6 rows selected.
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5
6
7
ptno
8*
SQL> /
EMPNO
---------7566
7900
7902
7369
7788
7876
)
ENAME
---------JONES
JAMES
FORD
SMITH
SCOTT
ADAMS
JOB
SAL
DEPTNO HIREDATE
--------- ---------- ---------- --------MANAGER
2975
20 02-APR-81
CLERK
950
30 03-DEC-81
ANALYST
3000
20 03-DEC-81
CLERK
800
20 17-DEC-80
ANALYST
3000
20 09-DEC-82
CLERK
1100
20 12-JAN-83
6 rows selected.
SQL> ed
Wrote file afiedt.buf
1 SELECT Empno, Ename, Job, Sal, Deptno, HireDate
2 FROM Emp
3 WHERE Sal IN(Select SalFROM Emp
4
WHERE HireDate IN(
5
SELECT HireDate
6
WHERE Deptno = (SELECT
Deptno
7
FROM Dept
8
WHERE
Dname =
'RESEARCH')
9
)
10*
)
SQL> /
WHERE HireDate IN(
*
ERROR at line 4:
ORA-00923: FROM keyword not found where expected
SQL> ws
SP2-0042: unknown command "ws" - rest of line ignored.
SQL> ed
Wrote file afiedt.buf
1 SELECT Empno, Ename, Job, Sal, Deptno, HireDate
2 FROM Emp
3 WHERE Sal IN(Select SalFROM Emp
4
WHERE HireDate IN(
5
SELECT HireDate
6
WHERE Deptno = (SELECT
Deptno
7
FROM Dept
8
WHERE
Dname =
'RESEARCH')
9
)
10*
)
SQL> ed
Wrote file afiedt.buf
1 SELECT Empno, Ename, Job, Sal, Deptno, HireDate
2 FROM Emp
3 WHERE Sal IN(Select SalFROM Emp
4
WHERE HireDate IN(
5
6
Deptno
7
8
Dname =
9
10*
SQL> cl scr
SELECT HireDate
WHERE Deptno = (SELECT
FROM Dept
WHERE
'RESEARCH')
)
)
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5
6
7
ptno
8*
SQL>
EMPNO
---------7566
7900
7902
7369
7788
7876
ENAME
---------JONES
JAMES
FORD
SMITH
SCOTT
ADAMS
JOB
SAL
DEPTNO HIREDATE
--------- ---------- ---------- --------MANAGER
2975
20 02-APR-81
CLERK
950
30 03-DEC-81
ANALYST
3000
20 03-DEC-81
CLERK
800
20 17-DEC-80
ANALYST
3000
20 09-DEC-82
CLERK
1100
20 12-JAN-83
6 rows selected.
SQL> cl scr
SQL> SELECT Sal
2 FROM Emp
3 WHERE Deptno = 20;
SAL
---------2975
3000
800
3000
1100
SQL> SELECT Ename, Deptno, Sal
2 FROM Emp
3 WHERE Sal IN(
4
SQL> ed
Wrote file afiedt.buf
1
2
3*
SQL>
ENAME
DEPTNO
SAL
---------- ---------- ---------JONES
20
2975
FORD
20
3000
SMITH
20
800
SCOTT
20
3000
ADAMS
20
1100
SQL> ed
Wrote file afiedt.buf
1
2
3*
SQL>
ENAME
DEPTNO
SAL
---------- ---------- ---------KING
10
5000
BLAKE
30
2850
CLARK
10
2450
JONES
20
2975
MARTIN
30
1250
ALLEN
30
1600
TURNER
30
1500
JAMES
30
950
WARD
30
1250
FORD
20
3000
SCOTT
20
3000
ENAME
DEPTNO
SAL
---------- ---------- ---------ADAMS
20
1100
MILLER
10
1300
13 rows selected.
SQL> ed
Wrote file afiedt.buf
1
2
3*
SQL>
ENAME
DEPTNO
SAL
---------- ---------- ---------BLAKE
30
2850
CLARK
10
2450
JONES
20
2975
MARTIN
30
1250
ALLEN
30
1600
TURNER
30
1500
JAMES
30
950
WARD
30
1250
SMITH
20
800
ADAMS
20
1100
MILLER
10
1300
11 rows selected.
SQL> cl scr
SQL> SELECT Empno, Ename, Job
2 FROM Emp
3 WHERE Sal < ANY(SELECT Sal
4
FROM Emp
5
WHERE Job = 'CLERK');
EMPNO
---------7369
7900
7876
7654
7521
ENAME
---------SMITH
JAMES
ADAMS
MARTIN
WARD
JOB
--------CLERK
CLERK
CLERK
SALESMAN
SALESMAN
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5*
SQL>
EMPNO
---------7654
7900
7521
7369
7876
ENAME
---------MARTIN
JAMES
WARD
SMITH
ADAMS
JOB
--------SALESMAN
CLERK
SALESMAN
CLERK
CLERK
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5*
SQL>
EMPNO
---------7369
7900
7876
7654
7521
ENAME
---------SMITH
JAMES
ADAMS
MARTIN
WARD
JOB
--------CLERK
CLERK
CLERK
SALESMAN
SALESMAN
SQL> ed
Wrote file afiedt.buf
1 SELECT Empno, Ename, Job
2 FROM Emp
3 WHERE Sal <SOME(SELECT Sal
4
5
6* Job <> 'CLERK'
SQL> /
EMPNO
---------7654
7521
ENAME
---------MARTIN
WARD
FROM Emp
WHERE Job = 'CLERK') AND
JOB
--------SALESMAN
SALESMAN
SQL> cl scr
SQL> SELECT Empno, Ename, Job
2 FROM Emp
3 WHERE Sal >ANY(SELECT Sal
4
FROM Emp
5
WHERE Job = 'CLERK');
EMPNO
---------7839
7902
7788
7566
7698
7782
7499
7844
7934
7654
7521
ENAME
---------KING
FORD
SCOTT
JONES
BLAKE
CLARK
ALLEN
TURNER
MILLER
MARTIN
WARD
JOB
--------PRESIDENT
ANALYST
ANALYST
MANAGER
MANAGER
MANAGER
SALESMAN
SALESMAN
CLERK
SALESMAN
SALESMAN
EMPNO
---------7876
7900
ENAME
---------ADAMS
JAMES
JOB
--------CLERK
CLERK
13 rows selected.
SQL> SELECT Sal
2
FROM Emp
3
WHERE Job = 'CLERK';
SAL
---------950
800
1100
1300
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5*
SQL>
EMPNO
---------7839
7902
7788
7566
7698
7782
7499
7844
7934
7654
7521
ENAME
---------KING
FORD
SCOTT
JONES
BLAKE
CLARK
ALLEN
TURNER
MILLER
MARTIN
WARD
JOB
SAL
--------- ---------PRESIDENT
5000
ANALYST
3000
ANALYST
3000
MANAGER
2975
MANAGER
2850
MANAGER
2450
SALESMAN
1600
SALESMAN
1500
CLERK
1300
SALESMAN
1250
SALESMAN
1250
EMPNO
---------7876
7900
ENAME
---------ADAMS
JAMES
JOB
SAL
--------- ---------CLERK
1100
CLERK
950
13 rows selected.
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5*
SQL>
EMPNO
---------7839
7698
7782
7566
7654
7499
7844
7900
7521
7902
7788
ENAME
---------KING
BLAKE
CLARK
JONES
MARTIN
ALLEN
TURNER
JAMES
WARD
FORD
SCOTT
JOB
SAL
--------- ---------PRESIDENT
5000
MANAGER
2850
MANAGER
2450
MANAGER
2975
SALESMAN
1250
SALESMAN
1600
SALESMAN
1500
CLERK
950
SALESMAN
1250
ANALYST
3000
ANALYST
3000
EMPNO
---------7876
7934
ENAME
---------ADAMS
MILLER
JOB
SAL
--------- ---------CLERK
1100
CLERK
1300
13 rows selected.
SQL> cl scr
SQL> SELECT Empno, Ename, Job, Sal
2 FROM Emp
3 WHERE Sal >ALL(SELECT AVG(Sal)
4
FROM Emp
5
GROUP BY Deptno);
EMPNO
---------7839
7566
7902
7788
ENAME
---------KING
JONES
FORD
SCOTT
JOB
SAL
--------- ---------PRESIDENT
5000
MANAGER
2975
ANALYST
3000
ANALYST
3000
EMPNO
---------7839
7566
7902
7788
ENAME
---------KING
JONES
FORD
SCOTT
JOB
SAL
--------- ---------PRESIDENT
5000
MANAGER
2975
ANALYST
3000
ANALYST
3000
SQL> cl scr
SQL> SELECT Empno, Ename Job, Sal
2 FROM Emp
3 WHERE Sal <ALL(SELECT AVG(Sal)
4
FROM Emp
5
GROUP BY Deptno);
EMPNO
---------7654
7844
7900
7521
7369
7876
7934
JOB
SAL
---------- ---------MARTIN
1250
TURNER
1500
JAMES
950
WARD
1250
SMITH
800
ADAMS
1100
MILLER
1300
7 rows selected.
SQL> SELECT AVG(Sal)
2
FROM Emp
3
GROUP BY Deptno;
AVG(SAL)
----------
2916.66667
2175
1566.66667
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5*
SQL>
EMPNO
---------7654
7844
7900
7521
7369
7876
7934
JOB
SAL
---------- ---------MARTIN
1250
TURNER
1500
JAMES
950
WARD
1250
SMITH
800
ADAMS
1100
MILLER
1300
7 rows selected.
SQL> cl scr
SQL> SELECT Ename, Sal, Deptno
2 FROM emp
3 WHERE (Deptno, Sal) IN(10, 3000);
WHERE (Deptno, Sal) IN(10, 3000)
*
ERROR at line 3:
ORA-00920: invalid relational operator
SQL> cl scr
SQL>
2
3
4
5
6
ORDID
PRODID
QTY
---------- ---------- ---------617
100861
100
617
100870
500
616
102130
10
SQL> SELECT ProdId, Qty
2
FROM Item
3
WHERE OrdID = 605;
PRODID
QTY
---------- ---------100861
100
100870
500
100890
101860
101863
102130
5
50
100
10
6 rows selected.
SQL> ed
Wrote file afiedt.buf
1 SELECT ProdId, Qty
2
FROM Item
3*
WHERE OrdID = 617
SQL> /
PRODID
QTY
---------- ---------100860
50
100861
100
100870
500
100871
500
100890
500
101860
100
101863
200
102130
100
200376
200
200380
300
10 rows selected.
SQL>
2
3
4
5
6
7
8
9
10
ORDID
PRODID
QTY
---------- ---------- ---------616
100861
10
621
100861
10
618
100861
50
617
100861
100
618
100870
10
616
100870
50
609
100870
5
617
100870
500
615
100870
100
621
100870
100
617
100890
500
ORDID
PRODID
QTY
---------- ---------- ---------617
101860
100
616
102130
10
620
102130
500
619
617
102130
102130
100
100
16 rows selected.
SQL> cl scr
SQL> SELECT Deptno, MAX(Sal)
2
3
FROM Emp
GROUP BY Deptno;
DEPTNO MAX(SAL)
---------- ---------10
5000
20
3000
30
2850
SQL> INSERT INTO Emp(Empno, Ename, Deptno, Sal)
2 VALUES(1234, 'SAMPLE01', 10, 3000);
1 row created.
SQL> INSERT INTO Emp(Empno, Ename, Deptno, Sal)
2 VALUES(1235, 'SAMPLE02', 10, 2850);
1 row created.
SQL> INSERT INTO Emp(Empno, Ename, Deptno, Sal)
2 VALUES(1236, 'SAMPLE03', 20, 2850);
1 row created.
SQL> SELECT Ename, Deptno, Sal
2 FROM Emp
3 WHERE Sal IN(SELECT MAX(Sal)
4
FROM Emp
5
GROUP BY Deptno);
ENAME
DEPTNO
SAL
---------- ---------- ---------KING
10
5000
BLAKE
30
2850
FORD
20
3000
SCOTT
20
3000
SAMPLE01
10
3000
SAMPLE02
10
2850
SAMPLE03
20
2850
7 rows selected.
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5*
SQL>
ENAME
DEPTNO
SAL
---------- ---------- ---------KING
10
5000
BLAKE
30
2850
FORD
20
3000
SCOTT
20
3000
SQL> SELECT Ename, Deptno, Sal
2 FROM Emp
3 WHERE Deptno IN (SELECT Deptno
4
FROM Emp
5
GROUP BY Deptno) AND
6
Sal IN (SELECT MAX(Sal)
7
FROM Emp
8
GROUP BY Deptno);
ENAME
DEPTNO
SAL
---------- ---------- ---------KING
10
5000
BLAKE
30
2850
FORD
20
3000
SCOTT
20
3000
SAMPLE01
10
3000
SAMPLE02
10
2850
SAMPLE03
20
2850
7 rows selected.
SQL> ROLLBACK;
Rollback complete.
SQL> SELECT Ename, Deptno, Sal
2 FROM Emp
3 WHERE (Deptno, Sal) IN(SELECT Deptno, MAX(Sal)
4
FROM Emp
5
GROUP BY Deptno);
ENAME
DEPTNO
SAL
---------- ---------- ---------KING
10
5000
BLAKE
30
2850
FORD
20
3000
SCOTT
20
3000
SQL> SELECT Ename, Deptno, Sal
2 FROM Emp
3 WHERE Deptno IN (SELECT Deptno
4
FROM Emp
5
GROUP BY Deptno) AND
6
Sal IN (SELECT MAX(Sal)
7
FROM Emp
8
GROUP BY Deptno);
ENAME
DEPTNO
SAL
---------- ---------- ---------KING
10
5000
BLAKE
30
2850
FORD
20
3000
SCOTT
20
3000
SQL> cl scr
SQL> SELECT M.Mgr
2
FROM Emp M;
MGR
---------7839
7839
7839
7698
7698
7698
7698
7698
7566
7902
MGR
---------7566
7788
7782
14 rows selected.
SQL> SELECT E.Ename
2 FROM Emp E
3 WHERE E.Empno IN(SELECT M.Mgr
4
ENAME
---------KING
BLAKE
JONES
FORD
SCOTT
CLARK
6 rows selected.
SQL> ed
Wrote file afiedt.buf
1
2
3
4*
SQL>
SELECT E.Ename
FROM Emp E
WHERE E.Empno NOT IN(SELECT M.Mgr
FROM Emp M)
/
no rows selected
SQL> ed
Wrote file afiedt.buf
1 SELECT E.Ename
2 FROM Emp E