Sub Queries

Embed Size (px)

DESCRIPTION

sq

Citation preview

Q1)Display employee who are not in sales dept?sol):Display all columns from emp.Condition Based on dname from Dept.Relation field is deptno(for emp,dept tables). --> SELECT * FROM empWHERE deptno NOT IN(SELECT deptno FROM dept WHERE dname='SALES');-----------------------------------------------------Q2)Display the dept name where no employee is working.?sol):Display dname from dept.condition based on deptno from emp.Relation field is deptno(for emp,dept tables).--> SELECT dname FROM deptWHERE deptno NOT IN(SELECT deptno FROM emp);------------------------------------------------------Q3)Display those employee who joined in the year 81 and his dept name keeps '5' characters?sol):Display all colums from emp table.Condition based on dname from dept andhiredate from emp.Related field is deptno(for emp,dept tables.).--> SELECT * FROM empWHERE deptno IN(SELECT deptno FROM deptWHERE dname LIKE '_____')AND hiredate LIKE '%81';----------------------------------------------------------Q4)Delete those employees whose location is 'NEW YORK' or'CHICAGO'?sol):Delete records from emp.Condition based on deptno from dept table.Related field is deptno (For emp,dept tables.)--> DELETE FROM empWHERE deptno IN(SELECT deptno FROM deptWHERE loc IN('CHICAGO','NEW YORK'));------------------------------------------------------------Q5)Display the dedparment name of those employees whose salary keeps '4' digits.?sol):Display dname from dept.Condtion based on sal from emp.Related field is deptno(for emp,dept tablesd.)--> SELECT dname FROM dept WHERE deptno IN(SELECT deptno FROM empWHERE sal LIKE '___');-----------------------------------------------------------Q6)Increment salary by 10% for those employees whose name isstarts with alphabet 'J' and his dept name ends with alphabet 's'?sol):display ename,sal,deptno from emp.Condition based on dname from dept and ename from emp.Related field is deptno(for dept,emp tables.)--> SELECT ename,sal+(sal * 0.1) IncrSal,deptno FROM empWHERE deptno IN (SELECT deptno FROM deptWHERE dname LIKE '%S')AND ename LIKE 'J%';--------------------------------------------------------------Q7)Display employee who have any employee under them?sol):Displya all fields from emp.Condition based on mgr from empRelated field is empno for two emp tables.--> SELECT * FROM empWHERE empno IN(SELECT mgr FROM emp WHERE mgr IS NOT NULL);------------------------------------------------------------Q8) Display employee who don't have any employee under them?sol):Displya all fields from emp.Condition based on mgr from empRelated field is empno for two emp tables.--> SELECT * FROM empWHERE empno NOT IN(SELECT mgr FROM emp WHERE mgr IS NOT NULL);-----------------------------------------------------------Q9)Delete those dept where JONES and KING are working?sol):Delete deptno from deptCondition based on ename from emp.Related field is deptno(for dept,emp tables).--> DELETE FROM deptWHERE deptno IN(SELECT deptno FROM empWHERE ename IN('JONES','KING'));------------------------------------------------------------Q10)Delete those employee who are not eligible for commision and their mgr name is 'JONES'?sol):Delete from empCondition Based On comm and mgrRelated field empno--> DELETE FROM empWHERE comm IS NULL AND mgr IN(SELECT empno FROM emp WHERE ename ='JONES'); -------------------------------------------------------------Q11)Display those employees whose dept name gives more than two words?sol):Display all columns in employee.Condition is based on loc in dept.Related field is deptno (for dept,emp tables.)--> SELECT * FROM emp WHERE deptno IN(SELECT deptno FROM deptWHERE loc LIKE '% %');-------------------------------------------------------------OUT PUT FROM SQL PROMPT:========================SQL> Select * from emp 2 where deptno NOT IN(select deptno from dept 3 where dname='SALES'); EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO------ ---------- --------- ------ --------- ------ ------ ------ 7369 SMITH CLERK 7902 17-DEC-80 800 20 7566 JONES MANAGER 7839 02-APR-81 2975 20 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 09-DEC-82 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7876 ADAMS CLERK 7788 12-JAN-83 1100 20 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 108 rows selected.SQL> SELECT dname FROM dept 2 WHERE deptno NOT IN(SELECT deptno FROM emp); DNAME--------------OPERATIONSSQL> SELECT * FROM emp 2 WHERE deptno IN(SELECT deptno FROM dept 3 WHERE dname LIKE '_____') 4 AND hiredate LIKE '%81'; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO------ ---------- --------- ------ --------- ------ ------ ------ 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7900 JAMES CLERK 7698 03-DEC-81 950 306 rows selected.SQL> DELETE FROM emp 2 WHERE deptno IN(SELECT deptno FROM dept 3 WHERE loc IN('CHICAGO','NEW YORK'));9 rows deleted.SQL> @e EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO------ ---------- --------- ------ --------- ------ ------ ------ 7369 SMITH CLERK 7902 17-DEC-80 800 20 7566 JONES MANAGER 7839 02-APR-81 2975 20 7788 SCOTT ANALYST 7566 09-DEC-82 3000 20 7876 ADAMS CLERK 7788 12-JAN-83 1100 20 7902 FORD ANALYST 7566 03-DEC-81 3000 20SQL> rollback;Rollback complete.SQL> @e EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO------ ---------- --------- ------ --------- ------ ------ ------ 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 09-DEC-82 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 12-JAN-83 1100 20 7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 1014 rows selected.SQL> SELECT dname FROM dept 2 WHERE deptno IN(SELECT deptno FROM emp 3 WHERE sal LIKE '___');DNAME--------------RESEARCHSALESSQL> SELECT ename,sal+(sal * 0.1) IncrSal,deptno FROM emp 2 WHERE deptno IN (SELECT deptno FROM dept 3 WHERE dname LIKE '%s') 4 AND ename LIKE 'J%';no rows selectedSQL> SELECT ename,sal+(sal * 0.1) IncrSal,deptno FROM emp 2 WHERE deptno IN (SELECT deptno FROM dept 3 WHERE dname LIKE '%S') 4 AND ename LIKE 'J%';ENAME INCRSAL DEPTNO---------- ------- ------JAMES 1045 30SQL> SELECT * FROM emp 2 WHERE empno IN(SELECT mgr FROM emp); EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO------ ---------- --------- ------ --------- ------ ------ ------ 7566 JONES MANAGER 7839 02-APR-81 2975 20 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 09-DEC-82 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7902 FORD ANALYST 7566 03-DEC-81 3000 206 rows selected.SQL> SELECT * FROM emp 2 WHERE empno IN(SELECT mgr FROM emp 3 WHERE mgr IS NOT NULL); EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO------ ---------- --------- ------ --------- ------ ------ ------ 7566 JONES MANAGER 7839 02-APR-81 2975 20 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 09-DEC-82 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7902 FORD ANALYST 7566 03-DEC-81 3000 206 rows selected.SQL> SELECT * FROM emp 2 WHERE empno NOT IN(SELECT mgr FROM emp 3 WHERE mgr IS NOT NULL); EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO------ ---------- --------- ------ --------- ------ ------ ------ 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 12-JAN-83 1100 20 7900 JAMES CLERK 7698 03-DEC-81 950 30 7934 MILLER CLERK 7782 23-JAN-82 1300 108 rows selected.SQL> DELETE FROM dept 2 WHERE deptno IN(SELECT deptno FROM emp 3 WHERE ename IN('JONES','KING'));2 rows deleted.SQL> @dDEPTNO DNAME LOC------ -------------- ------------- 30 SALES CHICAGO 40 OPERATIONS BOSTONSQL> rollback;Rollback complete.SQL> @dDEPTNO DNAME LOC------ -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTONSQL> DELETE FROM emp 2 WHERE comm IS NULL 3 AND mgr IN(SELECT empno FROM emp 4 WHERE ename ='JONES');2 rows deleted.SQL> @e EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO------ ---------- --------- ------ --------- ------ ------ ------ 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 12-JAN-83 1100 20 7900 JAMES CLERK 7698 03-DEC-81 950 30 7934 MILLER CLERK 7782 23-JAN-82 1300 1012 rows selected.SQL> rollback;Rollback complete.SQL> SELECT * FROM emp 2 WHERE deptno IN(SELECT deptno FROM dept 3 WHERE dname LIKE '% %');no rows selectedSQL> SELECT * FROM emp 2 WHERE deptno IN(SELECT deptno FROM dept 3 WHERE loc LIKE '% %'); EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO------ ---------- --------- ------ --------- ------ ------ ------ 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7839 KING PRESIDENT 17-NOV-81 5000 10 7934 MILLER CLERK 7782 23-JAN-82 1300 10SQL>