You are on page 1of 18

SQL> cl scr

SQL> SELECT
2
3
4

MIN(Sal)
FROM Emp
WHERE Deptno = 20;

MIN(SAL)
---------800
SQL>
2
3
4
5
6
7

SELECT Deptno, MIN(Sal)


FROM Emp
GROUP BY Deptno
HAVING MIN(Sal) > (SELECT
MIN(Sal)
FROM Emp
WHERE Deptno = 20);

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

1 SELECT Job, AVG(Sal)


2 FROM Emp
3 GROUP BY Job
4 HAVING AVG(Sal) = (SELECT
5
MIN(AVG(Sal))
6
FROM Emp
7*
GROUP BY Job);
SQL> ed
Wrote file afiedt.buf
1
2
3
4
5
6
7*
SQL>

SELECT Job, AVG(Sal)


FROM Emp
GROUP BY Job
HAVING AVG(Sal) = (SELECT
MIN(AVG(Sal))
FROM Emp
GROUP BY Job)
/

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

SELECT Job, AVG(Sal)


FROM Emp
GROUP BY Job
HAVING AVG(Sal) < (SELECT

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>

Select Ename, Deptno, MIN(Sal)


FROM Emp
GROUP BY Deptno, Ename
/

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

---------- ---------- ---------- --------KING


5000
10 PRESIDENT
JONES
2975
20 MANAGER
ALLEN
1600
30 SALESMAN
FORD
3000
20 ANALYST
SCOTT
3000
20 ANALYST
MILLER
1300
10 CLERK
SAMPLE02
1300
20
SAMPLE03
1300
30
8 rows selected.
SQL> ROLLBACK;
Rollback complete.
SQL> cl scr
SQL> SELECT HireDate
2
3
ptno = 20;

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

SELECT Empno, Ename, Job, Sal, Deptno, HireDate


FROM Emp
WHERE Sal IN(Select Sal
FROM Emp
WHERE HireDate IN(SELECT HireDate
FROM Emp
WHERE De
= 20)

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>

SELECT Empno, Ename, Job, Sal, Deptno, HireDate


FROM Emp
WHERE Sal IN(Select Sal
FROM Emp
WHERE HireDate IN(SELECT HireDate
FROM Emp
WHERE De
= (SELECT Deptno FROM Dept WHERE Dname ='RESEARCH'))
)
/

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>

SELECT Ename, Deptno, Sal


FROM Emp
WHERE Sal IN(2975, 3000, 800, 3000, 1100)
/

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>

SELECT Ename, Deptno, Sal


FROM Emp
WHERE Sal >ANY(2975, 3000, 800, 1100)
/

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>

SELECT Ename, Deptno, Sal


FROM Emp
WHERE Sal <ANY(2975, 3000, 800, 1100)
/

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>

SELECT Empno, Ename, Job


FROM Emp
WHERE Sal < (SELECT MAX(Sal)
FROM Emp
WHERE Job = 'CLERK')
/

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>

SELECT Empno, Ename, Job


FROM Emp
WHERE Sal <SOME(SELECT Sal
FROM Emp
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 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>

SELECT Empno, Ename, Job, Sal


FROM Emp
WHERE Sal >ANY(SELECT Sal
FROM Emp
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
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>

SELECT Empno, Ename, Job, Sal


FROM Emp
WHERE Sal >(SELECT MIN(Sal)
FROM Emp
WHERE Job = 'CLERK')
/

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

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>

SELECT Empno, Ename, Job, Sal


FROM Emp
WHERE Sal >(SELECT MAX(AVG(Sal))
FROM Emp
GROUP BY Deptno)
/

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>

SELECT Empno, Ename Job, Sal


FROM Emp
WHERE Sal <(SELECT MIN(AVG(Sal))
FROM Emp
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> 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

SELECT OrdID, ProdID, Qty


FROM Item
WHERE (ProdID, Qty) IN(SELECT ProdId, Qty
FROM Item
WHERE OrdID = 605) AND
OrdID <> 605;

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

SELECT OrdID, ProdID, Qty


FROM Item
WHERE ProdID IN(SELECT ProdID
FROM Item
WHERE OrdID = 605)
AND
Qty IN (SELECT Qty
FROM Item
WHERE OrdID = 605)
AND OrdID <> 605
/

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>

SELECT Ename, Deptno, Sal


FROM Emp
WHERE (Deptno, Sal) IN(SELECT Deptno, MAX(Sal)
FROM Emp
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
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

FROM Emp M);

3 WHERE E.Empno NOT IN(SELECT NVL(M.Mgr, 0)


4*
FROM Emp M)
SQL> /
ENAME
---------TURNER
WARD
MARTIN
ALLEN
MILLER
SMITH
ADAMS
JAMES
8 rows selected.
SQL> SPOOL OFF

You might also like