This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
DBMS CYCLE II
CREATE TABLE JOB( CODE NUMBER(3) NOT NULL, NAME VARCHAR2(10) NOT NULL);
ALTER TABLE JOB ADD PRIMARY KEY (CODE);
CREATE TABLE LOCATION( CODE NUMBER(3) NOT NULL, NAME VARCHAR2(10) NOT NULL);
ALTER TABLE LOCATION ADD PRIMARY KEY (CODE);
CREATE TABLE DEPT( DEPTNO NUMBER(2) NOT NULL, NAME VARCHAR2(10), LOCATION NUMBER(3) NOT NULL);
ALTER TABLE DEPT ADD PRIMARY KEY (DEPTNO);
ALTER TABLE DEPT ADD FOREIGN KEY (LOCATION) REFERENCES LOCATION (CODE);
CREATE TABLE EMPLOYEE( EMPNO NUMBER(4) NOT NULL, ENAME VARCHAR2(10), JOB NUMBER(3), MGR NUMBER(3), HIREDATE DATE, SAL NUMBER(8,2), COMM NUMBER(8,2), DEPTNO NUMBER(2) NOT NULL) ;
ALTER TABLE EMPLOYEE ADD PRIMARY KEY (EMPNO);
ALTER TABLE EMPLOYEE ADD FOREIGN KEY (JOB) REFERENCES JOB (CODE);
ALTER TABLE EMPLOYEE ADD FOREIGN KEY (MGR) REFERENCES EMPLOYEE (EMPNO);
ALTER TABLE EMPLOYEE ADD FOREIGN KEY (DEPTNO) REFERENCES DEPT (DEPTNO);
SQL> DESC EMPLOYEE;Name Type Nullable Default Comments -------- ------------ -------- ------- -------- EMPNO NUMBER(4) ENAME VARCHAR2(10) Y JOB NUMBER(3) Y MGR NUMBER(3) Y HIREDATE DATE Y SAL NUMBER(8,2) Y COMM NUMBER(8,2) Y DEPTNO NUMBER(2) SQL> DESC DEPT;Name Type Nullable Default Comments -------- ------------ -------- ------- -------- DEPTNO NUMBER(2) NAME VARCHAR2(10) Y LOCATION NUMBER(3) SQL> DESC JOB;Name Type Nullable Default Comments ---- ------------ -------- ------- -------- CODE NUMBER(3) NAME VARCHAR2(10) SQL> DESC LOCATION;Name Type Nullable Default Comments ---- ------------ -------- ------- -------- CODE NUMBER(3) NAME VARCHAR2(10)
SQL> DESC JOB_GRADES;Name Type Nullable Default Comments -------- --------- -------- ------- -------- GRADE CHAR(1) Y LOW_SAL NUMBER(6) Y HIGH_SAL NUMBER(6) Y
SQL> SELECT * FROM JOB ORDER BY CODE; CODE NAME---- -------------- 1 TRAINEE 2 PRESIDENT 3 ANALYST 4 CLERK SQL> SELECT * FROM LOCATION ORDER BY CODE; CODE NAME---- --------------- 1 VIJAYAWADA 2 KAKINADA 3 TIRUPATHI 4 CHICAGO
SQL> SELECT * FROM JOB_GRADES ORDER BY 1; GRADE LOW_SAL HIGH_SAL----- ------- ----------------------------A 1000 10000B 10001 60000C 60001 150000D 150001 600000
EXCERCISE - VI
1. List of departments with at least one ANALYST
SELECT DEPTNO, COUNT(EMPNO) "NO OF ANALYSTS" FROM EMPLOYEE WHERE JOB = (SELECT CODE FROM JOB WHERE UPPER(NAME) = 'ANALYST') GROUP BY DEPTNO HAVING COUNT(EMPNO) >= 1 ORDER BY DEPTNO;
DEPTNO NO OF ANALYSTS------ ------------------------------- 10 4 20 2 30 4 40 5
4 rows selected
2. Locations that have the SALES department
SELECT * FROM LOCATION WHERE CODE IN (SELECT LOCATION FROM DEPT WHERE UPPER(NAME) = 'SALES');
CODE NAME---- --------------- 1 VIJAYAWADA
3. Locations that have at least one ANALYST
SELECT L.NAME, COUNT(E.EMPNO) "NO OF ANALYSTS" FROM EMPLOYEE E, DEPT D, JOB J, LOCATION L WHERE E.DEPTNO = D.DEPTNO AND D.LOCATION = L.CODE AND E.JOB = J.CODE GROUP BY L.NAME HAVING COUNT(E.EMPNO) >= 1;
NAME NO OF ANALYSTS---------- -------------------------------TIRUPATHI 5VIJAYAWADA 8KAKINADA 10CHICAGO 6
4 rows selected
4. Employees and their department names
SELECT E.EMPNO, E.ENAME, D.DEPTNO, D.NAME FROM EMPLOYEE E, DEPT D WHERE E.DEPTNO = D.DEPTNO ORDER BY E.EMPNO;
SELECT E.ENAME, D.NAME FROM EMPLOYEE E, DEPT D WHERE E.DEPTNO = D.DEPTNO AND UPPER(E.ENAME) = 'DENNIS';
ENAME NAME---------- ----------------DENNIS SALES
8. Department name,Job name, and Location name of DENNIS
SELECT E.EMPNO, E.ENAME, D.NAME, L.NAME, J.NAME FROM EMPLOYEE E, DEPT D, LOCATION L, JOB J WHERE E.DEPTNO = D.DEPTNO AND E.JOB = J.CODE AND D.LOCATION = L.CODE AND UPPER(E.ENAME) = 'DENNIS';
EMPNO ENAME NAME NAME NAME----- ---------- ----------------------------------------------- ---------- ---------- 113 DENNIS SALES VIJAYAWADA ANALYST
EXCERCISE - VII
1. Employees working in SALES department (using Subquery or joins)
SELECT E.EMPNO, E.ENAME, D.NAME FROM EMPLOYEE E, DEPT D WHERE E.DEPTNO = D.DEPTNO AND UPPER(D.NAME) = 'SALES' ORDER BY 1; EMPNO ENAME NAME----- ---------- --------------------- 101 ASHISH SALES 107 KEERTHI SALES 108 CHAWLA SALES 111 SURYA SALES 113 DENNIS SALES 114 SUNIL SALES 115 ANIL SALES 125 SUNAINA SALES 8 rows selected
2. List the department names and employees who draw commission less than 1000. Also display the departments even if no employee exists with the said condition.
SELECT D.NAME, E.ENAME, E.COMM FROM (SELECT * FROM EMPLOYEE WHERE COMM < 1000) E, DEPT D WHERE E.DEPTNO(+) = D.DEPTNO
NAME ENAME COMM---------- ---------- ----------------------------------------RESEARCH SHYAM 700.00SALES SURYA 600.00ACCOUNTING ADMIN
3. Employees and their locations
SELECT E.EMPNO, E.ENAME, L.CODE, L.NAME FROM EMPLOYEE E, DEPT D, LOCATION L WHERE E.DEPTNO = D.DEPTNO AND D.LOCATION = L.CODE ORDER BY 1;
EMPNO ENAME CODE NAME----- ---------- ---- ---------------------------------------- 101 ASHISH 1 VIJAYAWADA 102 SAGAR 3 TIRUPATHI 103 WILLIAMS 2 KAKINADA 104 GEORGE 2 KAKINADA 105 PRADEEP 4 CHICAGO
SELECT E.EMPNO, E.ENAME, J.NAME, L.NAME FROM EMPLOYEE E, DEPT D, LOCATION L, JOB J WHERE E.DEPTNO = D.DEPTNO AND D.LOCATION = L.CODE AND E.JOB = J.CODE AND UPPER(J.NAME) = 'ANALYST' ORDER BY 1;
EMPNO ENAME NAME NAME----- ---------- ---------- ------------------------------ 104 GEORGE ANALYST KAKINADA 105 PRADEEP ANALYST CHICAGO 106 SRINIVAS ANALYST CHICAGO 111 SURYA ANALYST VIJAYAWADA 112 SHYAM ANALYST TIRUPATHI 113 DENNIS ANALYST VIJAYAWADA 114 SUNIL ANALYST VIJAYAWADA 116 SUHAS ANALYST TIRUPATHI 117 SURAJ ANALYST CHICAGO 118 LAKSHMI ANALYST CHICAGO 119 KARTHIK ANALYST KAKINADA 120 PULLARAO ANALYST KAKINADA
6. List employees whose salary exceeds their managers
SELECT OUTER.EMPNO, OUTER.ENAME, OUTER.SAL, OUTER.MGR FROM EMPLOYEE OUTER WHERE EXISTS (SELECT 1 FROM EMPLOYEE INNER WHERE INNER.EMPNO = OUTER.MGR AND INNER.SAL < OUTER.SAL);
SELECT E.EMPNO, E.ENAME, J.GRADE FROM EMPLOYEE E, JOB_GRADES J WHERE E.SAL BETWEEN J.LOW_SAL AND J.HIGH_SAL;
EMPNO ENAME GRADE----- ---------- --------------------------- 107 KEERTHI A 108 CHAWLA A 109 SATIBABU B 110 SRINIVAS B 125 SUNAINA B 119 KARTHIK B
114 SUNIL B 124 SPOORTHY B 116 SUHAS B 127 PAVAN B 113 DENNIS B 115 ANIL B 117 SURAJ B 112 SHYAM B 128 HEMANTH B 123 SUNNELA B 129 NARESH B 111 SURYA B 120 PULLARAO B 121 SUSHMA B 118 LAKSHMI B 122 ASHA B 126 DURGARAO B 101 ASHISH D 105 PRADEEP D 102 SAGAR D 106 SRINIVAS D 103 WILLIAMS D 104 GEORGE D 29 rows selected
EXCERCISE - VIII
1. List the average annual salary for all the employees
SELECT AVG(SAL) FROM EMPLOYEE;
AVG(SAL)----------88906.8965
2. The maximum salary of clerks in the company
SELECT J.NAME, MAX(SAL) "MAXIMUM_SALARY" FROM EMPLOYEE E, JOB J WHERE E.JOB = J.CODE AND UPPER(J.NAME) = 'CLERK' GROUP BY J.NAME;
NAME MAXIMUM_SALARY---------- ---------------------------------CLERK 37000
3. How many employees are drawing commission?
SELECT COUNT(EMPNO) FROM EMPLOYEE WHERE COMM IS NOT NULL;
COUNT(EMPNO)-------------------------- 15
4. Find all the ANALYSTS with the minimum salary among ANALYSTS
SELECT EMPNO,ENAME,JOB,SAL FROM EMPLOYEE WHERE (JOB, SAL) = (SELECT JOB, MIN(SAL) FROM EMPLOYEE WHERE JOB = (SELECT CODE FROM JOB WHERE UPPER(NAME) =
6. Find all the employees who earn more than the average salary of their respective departments
SELECT OUTER.EMPNO, OUTER.ENAME, OUTER.SAL, OUTER.DEPTNO FROM EMPLOYEE OUTER WHERE OUTER.SAL > (SELECT AVG(INNER.SAL) FROM EMPLOYEE INNER WHERE INNER.DEPTNO = OUTER.DEPTNO) ORDER BY 1;
SELECT DEPTNO, COUNT(EMPNO) "TOTAL_NO_OF_EMPLOYEES" FROM EMPLOYEE WHERE JOB = (SELECT CODE FROM JOB WHERE UPPER(NAME) = 'CLERK') GROUP BY DEPTNO HAVING COUNT(EMPNO) >= 2 ORDER BY 1;
10.Number of employees and average salary for each department in each location
SELECT D.DEPTNO, D.NAME, L.CODE, L.NAME, COUNT(E.EMPNO), AVG(E.SAL) FROM EMPLOYEE E, DEPT D, LOCATION L WHERE E.DEPTNO = D.DEPTNO AND D.LOCATION = L.CODE GROUP BY D.DEPTNO, D.NAME, L.CODE, L.NAME ORDER BY 1;
DEPTNO NAME CODE NAME COUNT(E.EMPNO) AVG(E.SAL)------ ---------- ---- ---------- -------------- ------------------------------------------------- 10 SALES 1 VIJAYAWADA 8 41287.5 20 RESEARCH 3 TIRUPATHI 5 70400 30 ACCOUNTING 4 CHICAGO 6 114000 40 ADMIN 2 KAKINADA 10 121200
EXCERCISE - IX
1. Find the number of employees and average salary for each job group in each department having more than 3 employees in each job group.
SELECT DEPTNO, JOB, COUNT(EMPNO), AVG(SAL) FROM EMPLOYEE GROUP BY DEPTNO, JOB HAVING COUNT(EMPNO) > 3 ORDER BY 1;
2. Find the number of analysts in each department having more than one employee
SELECT DEPTNO, COUNT(EMPNO) "NO_OF_EMPLOYEES" FROM EMPLOYEE WHERE JOB = (SELECT CODE FROM JOB WHERE UPPER(NAME) = 'ANALYST') GROUP BY DEPTNO HAVING COUNT(EMPNO) > 0 ORDER BY 1;
3. Display the names of employees along with their department names from the departments having at least three employees
SELECT E.EMPNO, E.ENAME, D.DEPTNO, D.NAME FROM EMPLOYEE E, DEPT D WHERE E.DEPTNO = D.DEPTNO AND E.DEPTNO IN (SELECT DEPTNO FROM EMPLOYEE GROUP BY DEPTNO HAVING COUNT(EMPNO) > 3) ORDER BY 1;
4. Name the departments where in you have atleast one employee drawing more than the average salary of their respective department.
SELECT DEPTNO, NAME FROM DEPT WHERE DEPTNO IN (SELECT OUTER.DEPTNO FROM EMPLOYEE OUTER WHERE OUTER.SAL > (SELECT AVG(INNER.SAL) FROM EMPLOYEE INNER WHERE INNER.DEPTNO = OUTER.DEPTNO));
SELECT L.CODE, L.NAME FROM DEPT D, LOCATION L WHERE D.LOCATION = L.CODE AND UPPER(D.NAME) = 'SALES';
CODE NAME---- ---------- 1 VIJAYAWADA
8.Locations that have at least one ANALYST
SELECT DISTINCT L.CODE, L.NAME FROM EMPLOYEE E, DEPT D, LOCATION L, JOB J WHERE E.DEPTNO = D.DEPTNO AND E.JOB = J.CODE AND D.LOCATION = L.CODE AND UPPER(J.NAME) = 'ANALYST';
SELECT E.ENAME, D.NAME, L.NAME, J.NAME FROM EMPLOYEE E, DEPT D, JOB J, LOCATION L WHERE E.DEPTNO = D.DEPTNO AND D.LOCATION = L.CODE AND E.JOB = J.CODE AND UPPER(E.ENAME) = 'DENNIS';
ENAME NAME NAME NAME---------- ---------- ---------- -------------------------------DENNIS SALES VIJAYAWADA ANALYST
5.Employees working in sales department
SELECT E.EMPNO,E.ENAME,D.NAME FROM EMPLOYEE E,DEPT DWHERE E.DEPTNO=D.DEPTNO AND D.NAME='SALES' ORDER BY 1;
SELECT E.EMPNO, E.ENAME, L.CODE, L.NAME FROM EMPLOYEE E, DEPT D, LOCATION L WHERE E.DEPTNO = D.DEPTNO AND D.LOCATION = L.CODE AND E.JOB = (SELECT CODE FROM JOB WHERE UPPER(NAME) = 'ANALYST') ORDER BY 1;
8.List of all employees earn maximum salary in thier respective departments
SELECT D.DEPTNO,D.NAME,E.EMPNO, E.ENAME, E.SAL FROM EMPLOYEE E,DEPT D WHERE (D.DEPTNO, E.SAL) IN
(SELECT DEPTNO, MAX(SAL) FROM EMPLOYEE GROUP BY DEPTNO);
DEPTNO NAME EMPNO ENAME SAL------ ---------- ----- ---------- ----------------------------------------- 10 SALES 101 ASHISH 220000.00 20 RESEARCH 102 SAGAR 280000.00 30 ACCOUNTING 106 SRINIVAS 300000.00 40 ADMIN 104 GEORGE 520000.00
9.List of employees who's salary exceeds their managers.
SELECT OUTER.EMPNO, OUTER.ENAME, OUTER.SAL FROM EMPLOYEE OUTER WHERE EXISTS (SELECT 1 FROM EMPLOYEE INNER WHERE INNER.EMPNO = OUTER.MGR AND INNER.SAL < OUTER.SAL) ORDER BY 1;