CH 6 Sub Query
CH 6 Sub Query
Objectives
Main Query
Subquery
?
“What is Jones’ salary?”
Subqueries
SELECT select_list
FROM table
WHERE expr operator
(SELECT select_list
FROM table);
ENAME
ENAME
----------
----------
KING
KING
FORD
FORD
SCOTT
SCOTT
Guidelines for Using
Subqueries
Enclose subqueries in parentheses.
Place subqueries on the right side of the
comparison operator.
Do not add an ORDER BY clause to a
subquery.
Use single-row operators with single-row
subqueries.
Use multiple-row operators with multiple-
row subqueries.
Types of Subqueries
• Single-row subquery
Main query
returns
Subquery CLERK
•• Multiple-row
Multiple-row subquery
subquery
Main query
Subquery
returns CLERK
MANAGER
•• Multiple-column
Multiple-column subquery
subquery
Main query
returns
Subquery CLERK 7900
MANAGER 7698
Single-Row Subqueries
Return only one row
Use single-row comparison operators
Operator Meaning
= Equal to
ENAME
ENAME JOB
JOB
----------
---------- ---------
---------
MILLER
MILLER CLERK
CLERK
Using Group Functions
in a Subquery
SQL> SELECT ename, job, sal
800
2 FROM emp
3 WHERE sal =
4 (SELECT MIN(sal)
5 FROM emp);
ENAME
ENAME JOB
JOB SAL
SAL
----------
---------- ---------
--------- ---------
---------
SMITH
SMITH CLERK
CLERK 800
800
HAVING Clause with
Subqueries
The Oracle Server executes subqueries first.
The Oracle Server returns results into the
HAVING clause of the main query.
no
no rows
rows selected
selected
Will This Statement Work?
Operator Meaning
EMPNO
EMPNO ENAME
ENAME JOB
JOB
---------
--------- ----------
---------- ---------
---------
7654
7654 MARTIN
MARTIN SALESMAN
SALESMAN
7521
7521 WARD
WARD SALESMAN
SALESMAN
Using ALL Operator
in Multiple-Row Subqueries
SQL> SELECT empno, ename, job 1566.6667
2 FROM emp 2175
2916.6667
3 WHERE sal > ALL
4 (SELECT avg(sal)
5 FROM emp
6 GROUP BY deptno);
EMPNO
EMPNO ENAME
ENAME JOB
JOB
---------
--------- ----------
---------- ---------
---------
7839
7839 KING
KING PRESIDENT
PRESIDENT
7566
7566 JONES
JONES MANAGER
MANAGER
7902
7902 FORD
FORD ANALYST
ANALYST
7788
7788 SCOTT
SCOTT ANALYST
ANALYST
Summary
Subqueries are useful when a query is based on
unknown values.
SELECT select_list
FROM table
WHERE expr operator
(SELECT select_list
FROM table);
Practice Overview
Creating subqueries to query values based on unknown criteria
Using subqueries to find out what values exist in one set of data and not in another