SQLDAY 11
SQLDAY 11
SUB-QUERY
" A QUERY WRITTEN INSIDE ANOTHER QUERY IS KNOWN
AS SUB QUERY "
Working Principle :
Example :
EMP
EID ENAME SAL DEPTNO
1 ALLEN 1000 20
2 BLAKE 2000 10
3 CLARK 3000 30
4 MILLER 1500 10
5 SMITH 2500 10
SELECT ENAME
FROM EMP
New Section 1 Page 1
WHERE SAL > 2500 ;
SELECT ENAME
FROM EMP
WHERE SAL < ( SELECT SAL
FROM EMP
WHERE ENAME = 'MILLER' );
SELECT *
FROM
EMP
WHERE JOB = ( SELECT JOB
FROM EMP
WHERE ENAME ='KING' );
SELECT *
FROM
EMP
WHERE SAL > 1500 AND JOB = ( SELECT JOB
FROM EMP
New Section 1 Page 2
WHERE ENAME ='MILLER' ) ;
SELECT *
FROM EMP
WHERE SAL > ( SELECT SAL
FROM EMP
WHERE ENAME ='SMITH' ) AND SAL < ( SELECT SAL
FROM EMP
WHERE ENAME ='KING' ) ;
10. WAQTD name and hiredate of the employees who's name ends
with 'S' and hired after James .
SELECT ENAME
FROM EMP
WHERE DEPTNO=(SELECT DEPTNO
FROM EMP
WHERE ENAME='JAMES') AND
SAL>(SELECT SAL
FROM EMP
WHERE ENAME='ADAMS') AND
JOB=(SELECT JOB
FROM EMP
WHERE ENAME='MILLER') AND
SELECT *
FROM
EMP
WHERE JOB ='SALESMAN' AND
DEPTNO = 20 AND
COMM > ( SELECT COMM
FROM EMP
WHERE ENAME ='SMITH' ) AND
HIREDATE > ( SELECT HIREDATE
FROM EMP
WHERE ENAME ='KING' ) ;
SELECT COUNT(*)
FROM EMP
WHERE SAL > ( SELECT SAL
FROM EMP
WHERE ENAME ='SMITH') AND
SAL < ( SELECT SAL
FROM EMP
WHERE ENAME ='MARTIN' )
14. WAQTD Ename and SAL for all the employees earning more
than JONES .
SELECT *
FROM
EMP
WHERE JOB ='MANAGER' ;
NOTE :
In the Inner Query / Sub Query we cannot select more than
One column .
The corresponding columns need not be same , but the
datatypes of those has to be same .
ASSIGNMENT ON CASE 1
New Section 1 Page 5
1. WAQTD NAME OF THE EMPLOYEES EARNING MORE
THAN ADAMS
2. WAQTD NAME AND SALARY OF THE EMPLOYEES
EARNING LESS THAN KING
3. WAQTD NAME AND DEPTNO OF THE EMPLOYEES IF THEY
ARE WORKING IN THE SAME DEPT AS JONES
4. WAQTD NAME AND JOB OF ALL THE EMPLOYEES
WORKING IN THE SAME DESIGNATION AS JAMES
5. WAQTD EMPNO AND ENAME ALONG WITH ANNUAL
SALARY OF ALL THEEMPLOYEES IF THEIR ANNUAL SALARY
IS GREATER THAN WARDS ANNUAL SALARY.
6. WAQTD NAME AND HIREDATE OF THE EMPLOYEES IF
THEY ARE HIRED BEFORE SCOTT
7. WAQTD NAME AND HIREDATE OF THE EMPLOYEES IF
THEY ARE HIRED AFTER THE PRESIDENT
8. WAQTD NAME AND SAL OF THE EMPLOYEE IF THEY ARE
EARNING SAL LESS THAN THE EMPLOYEE WHOS EMPNO IS
7839 9.WAQTD ALL THE DETAILS OF THE EMPLOYEES IF THE
EMPLOYEES ARE HIRED BEFORE MILLER
10. WAQTD ENAME AND EMPNO OF THE EMPLOYEES
IF EMPLOYEES ARE EARNING MORE THAN ALLEN
11. WAQTD ENAME AND SALARY OF ALL THE EMPLOYEES
WHO ARE EARNING MORE THAN MILLER BUT LESS THAN
ALLEN .
12. WAQTD ALL THE DETAILS OF THE EMPLOYEES WORKING IN
DEPT 20 AND WORKING IN THE SAME DESIGNATION AS SMITH
13.WAQTD ALL THE DETAILS OF THE EMPLOYEES WORKING
AS MANAGER IN THE SAME DEPT AS TURNER
14. WAQTD NAME AND HIREDATE OF THE EMPLOYEES
HIRED AFTER 1980 AND BEFORE KING
15. WAQTD NAME AND SAL ALONG WITH ANNUAL SAL FOR
ALL EMPLOYEES WHOS SAL IS LESS THAN BLAKE AND MORE
THAN 3500
16. WAQTD ALL THE DETAILS OF EMPLOYEES WHO EARN
MORE THAN SCOTT BUT LESS THAN KING
17. WAQTD NAME OF THE EMPLOYEES WHOS NAME
STARTS WITH 'A' AND WORKS IN THE SAME DEPT AS
BLAKE
18. WAQTD NAME AND COMM IF EMPLOYEES EARN
COMISSION AND WORK IN THE SAME DESIGNATION AS SMITH
19. WAQTD DETAILS OF ALL THE EMPLOYEES WORKING
AS CLERK IN THE SAME DEPT AS TURNER .
20. WAQTD ENAME, SAL AND DESIGNATION OF THE
EMPLOYEES WHOS ANNUAL SALARY IS MORE THAN SMITH
AND LESS THAN KING.
15. WAQTD NAME AND SAL ALONG WITH ANNUAL SAL FOR
ALL EMPLOYEES
WHOS SAL IS LESS THAN BLAKE AND MORE THAN 3500
SELECT ENAME , SAL , SAL*12
FROM EMP
WHERE SAL > 3500 AND SAL < ( SELECT SAL
FROM EMP
WHERE ENAME ='BLAKE );
Example :
Emp
EID ENAME SAL DEPTNO
1 ALLEN 1000 20 DEPT
2 BLAKE 2000 10 DEPTNO DNAME LOC
3 CLARK 3000 30 10 D1 L1
4 MILLER 1500 10 20 D2 L2
5 ADAMS 2500 20 30 D3 L3
SELECT DEPTNO
FROM EMP
WHERE ENAME ='MILLER' ;
SELECT DNAM
FROM
DEPT
WHERE DEPTNO = ( SELECT DEPTNO
FROM EMP
WHERE ENAME ='MILLER' ) ;
SELECT
LOC FROM
DEPT
WHERE DEPTNO = ( SELECT DEPTNO
FROM EMP
WHERE ENAME ='ADAMS' ) ;
SELECT ENAME
FROM EMP
WHERE DEPTNO = ( SELECT DEPTNO
FROM DEPT
WHERE LOC ='L2' ) ;
SELECT COUNT(*)
FROM EMP
WHERE DEPTNO = ( SELECT DEPTNO
SELECT *
FROM EMP
WHERE JOB ='MANAGER' AND
DEPTNO = ( SELECT DEPTNO
FROM DEPT
WHERE DNAME ='ACCOUNTING' ) ;
SELECT *
FROM EMP
WHERE JOB = ( SELECT JOB
FROM EMP
WHERE ENAME ='MILLER' ) AND DEPTNO = (
SELECT DEPTNO FROM DEPT WHERE LOC ='NEW
YORK' ) ;
SELECT COUNT(*)
FROM EMP
WHERE JOB ='CLERK' AND
DEPTNO = ( SELECT DEPTNO
FROM EMP
WHERE ENAME ='SMITH') AND
SAL > ( SELECT SAL
FROM EMP
WHERE ENAME ='KING' ) AND
HIREDATE > ( SELECT HIREDATE
FROM EMP
WHERE ENAME ='MARTIN' ) AND
DEPTNO = ( SELECT DEPTNO
FROM DEPT
WHERE LOC ='BOSTON' ) ;
ASSIGNMENT ON CASE 2 :
SELECT ENAME
FROM EMP
WHERE SAL = MAX( SAL ) ;
SELECT ENAME
FROM EMP
WHERE SAL = ( SELECT MAX( SAL )
FROM EMP ) ;
SELECT LOC
FROM DEPT
WHERE DEPTNO = ( SELECT DEPTNO
FROM EMP
WHERE COMM IS NOT NULL AND DEPTNO = 40 ) ;