Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

Emp table

EMPNO ENAME JOB SUPERENO HIREDATE SAL COMM DEPTNO


7839 King11 President - 17-NOV-03 6500 - 10

7566 Jones11 Manager 7839 02-APR-03 3375 - 20

7698 Blake11 Manager 7839 01-MAY-03 3250 - 30

7782 Clark11 Manager 7839 09-JUN-03 2850 - 10

7788 Scott11 Analyst 7566 27-JUN-02 3500 - 20

7902 Ford11 Analyst 7566 03-DEC-03 3500 - 20

7499 Allen11 Salesman 7698 20-FEB-03 2000 500 30

7521 Ward11 Salesman 7698 22-FEB-03 1650 800 30

7654 Martin11 Salesman 7698 28-SEP-03 1650 1400 30

7844 Turner11 Salesman 7698 08-SEP-03 1900 0 30

7900 James11 Salesman 7698 03-DEC-03 1650 - 30

7934 Miller11 Clerk 7782 23-JAN-03 1700 - 10

7876 Adams11 Clerk 7788 31-JUL-02 1500 - 20

7369 Smith11 Clerk 7902 17-DEC-02 1200 - 20

7700 Omar Manager 7839 01-JAN-02 4000 - 10


Mohamma
7701 Analyst 7566 25-JUN-04 3750 - 20
d
7702 Khanfar Salesman 7698 24-DEC-04 2100 850 30

7703 Mahmood Clerk 7700 17-OCT-04 1800 - 10

Dept table

DEPTNO DNAME LOC


Accountin
10 New York
g
20 Research Dallas
30 Sales Chicago
40 Operations Boston
Part 1 :Displaying Data from Multiple Tables
1. LIST ENAME, JOB, ANNUAL SAL, DEPTNO, DNAME WHO EARN 45000 PER YEAR
AND WHO ARE NOT 'Analyst'

SELECT ENAME, JOB, (SAL * 12) AS ANNUAL_SAL, e.DEPTNO, DNAME


FROM EMP e
JOIN DEPT d ON e.DEPTNO = d.DEPTNO
WHERE JOB != 'Analyst' AND SAL * 12 = 45000;

2. LIST THE EMPLOYEE DEPTNAME AND LOCATION OF ALL THE EMPLOYEES WHO ARE
Analyst or REPORTING TO 'Jihad' use your Name .

SELECT e.ENAME, e.JOB, d.DNAME, d.LOC


FROM EMP e
JOIN DEPT d ON e.DEPTNO = d.DEPTNO
WHERE e.JOB = 'Analyst' OR e.SUPERENO = (SELECT EMPNO FROM EMP WHERE ENAME =
'Omar’);
ENAME JOB DNAME LOC
Scott11 Analyst Research Dallas
Ford11 Analyst Research Dallas
Mohammad Analyst Research Dallas
Mahmood Clerk Accounting New York
3. LIST EMPLOYEES WHO ARE WORKING IN Research DEPT AND THEY ARE Clerk
SELECT ENAME, JOB
FROM EMP ENAME JOB
WHERE DEPTNO = (SELECT DEPTNO Adams11 Clerk
FROM DEPT Smith11 Clerk
WHERE DNAME = 'Research')
AND JOB = 'Clerk';

4. DISPLAY THE EMPLOYEE NAMES,HIREDATE,COMM OF King’s MANAGER.

ENAME HIREDATE COMM


SELECT e.ENAME, e.HIREDATE, e.COMM
Jones11 02-APR-03 -
FROM EMP e
Blake11 01-MAY-03 -
JOIN EMP manager ON e.SUPERENO = manager.EMPNO
WHERE manager.ENAME = 'King11'; Clark11 09-JUN-03 -
Omar 01-JAN-02 -

5. DISPLAY ENAME DNAME OF ALL THE EMPLOYEES WHOSE NAME STARTS WITH S

SELECT e.ENAME, d.DNAME ENAME DNAME


FROM EMP e Scott11 Research
JOIN DEPT d ON e.DEPTNO = d.DEPTNO
Smith11 Research
WHERE e.ENAME LIKE 'r%';
Omar Accounting

6. LIST THE DEPARTMENT NAMES , enames and Hiredates for EMPLOYEES that ARE
HIRED BETWEEN 1ST OF JAN 2003 AND 31ST DEC 2003 WITH SALARY MORE THAN
3500.

DNAME ENAME HIREDATE


SELECT d.DNAME, e.ENAME, e.HIREDATE
Accounting King11 17-NOV-03
FROM EMP e
JOIN DEPT d ON e.DEPTNO = d.DEPTNO
WHERE e.HIREDATE BETWEEN TO_DATE('01-JAN-03', 'DD-MON-YY') AND TO_DATE('31-DEC-
03', 'DD-MON-YY')
AND e.SAL > 3500;
Part 2: Grouping functions:

1. Display the deptno which is having the maximum salary and maximum salary more than 1500
earned by the employee and job description not as a clerk and sort by descending order

SELECT DEPTNO, MAX(SAL) AS MAX_SALARY DEPTNO MAX_SALARY


FROM EMP
WHERE SAL > 1500 AND JOB != 'Clerk' 10 6500
GROUP BY DEPTNO 20 3750
ORDER BY MAX_SALARY DESC; 30 3250

2. List the number of employee in each department, except 30, sorted high to low. Only include
department with 3 or more employee.

SELECT DEPTNO, COUNT(*) AS EMPLOYEE_COUNT


DEPTNO EMPLOYEE_COUNT
FROM EMP
WHERE DEPTNO <> 30 20 6

GROUP BY DEPTNO 10 5
HAVING COUNT(*) >= 3
ORDER BY EMPLOYEE_COUNT DESC;

3. Sql query to find second highest salary of employee---------SUBQUERY

SELECT MAX(SAL) AS SECOND_HIGHEST_SALARY SECOND_HIGHEST_SALARY


FROM EMP 4000
WHERE SAL < (SELECT MAX(SAL) FROM EMP);

4. Display the number of employees who has annual salary more than 25000 in each department.

SELECT DEPTNO, COUNT(*) AS EMPLOYEE_COUNT


DEPTNO EMPLOYEE_COUNT
FROM EMP
WHERE (SAL * 12) > 25000 30 2
GROUP BY DEPTNO; 20 4
10 3

5. Display the max salary for each of the job excluding all the employee whose having commission.

SELECT JOB, MAX(SAL) AS MAX_SALARY JOB MAX_SALARY


FROM EMP Manager 4000
WHERE COMM IS NULL
Analyst 3750
GROUP BY JOB;
Clerk 1800
President 6500
Salesman 1650
6. DISPLAY ENAME, DNAME OF ALL THE EMPLOYEES WHOSE SALARY LESS THAN AVG
SAL OF DEPT 30 (hint SUBQUERY + JOIN)
ENAME DNAME
SELECT e.ENAME, d.DNAME
Allen11 Sales
FROM EMP e
Ward11 Sales
JOIN DEPT d ON e.DEPTNO = d.DEPTNO
Martin11 Sales
WHERE e.SAL < (SELECT AVG(SAL)
FROM EMP Turner11 Sales

WHERE DEPTNO = 30); James11 Sales


Miller11 Accounting
Adams11 Research
Smith11 Research
Mahmood Accounting

You might also like