Subquery assignment 115
Subquery assignment 115
com
Insta id:sharath_hiremath_95
QUESTIONS on SUBQUERY
5. QUERY TO DISPLAY ALL THE EMPLOYEES WHO’S DEPT NUMBER IS SAME AS SCOTT.
SELECT DNAME FROM DEPT WHERE DEPTNO IN (SELECT DEPTNO FROM EMP WHERE MGR
IS NULL);
10. LIST ALL THE EMPLOYEES WHO ARE REPORTING TO JONES MANAGER
→SELECT * from emp where mgr = (SELECT mgr from emp WHERE ename='jones');
→ SELECT ENAME FROM EMP WHERE DEPTNO IN(SELECT DEPTNO FROM DEPT WHERE
DNAME IN('ESEARCH','ACCOUNTING') AND EMPNO IN(SELECT MGR FROM EMP GROUP BY
MGR HAVING COUNT(*)>=2));
12. DISPLAY THE DEPARTNAME OF THE EMPLOYEE WHOSE NAME DOES NOT STARTS
WITH S AND SALARY BETWEEN 1500 TO 3000.
→SELECT dname from dept where deptno in (SELECT deptno from emp where ename not LIKE 'S%'
and sal BETWEEN 1501 and 1999 );
→SELECT loc from dept where deptno in (SELECT deptno from emp where sal=(SELECT min(sal)
from emp where sal>2000));
→SELECT loc from dept where deptno in(SELECT deptno from emp GROUP by deptno
HAVING COUNT(*)>3);
16. WRITE A QUERY TO DISPLAY ALL THE EMPLOYEE WHOSE JOB NOT SAME AS
ALLEN AND SALARY IS GREATER THAN MARTIN.
→SELECT * from emp where job !=(SELECT job from emp WHERE ename ='ALLEN') and
sal>(SELECT sal from emp WHERE ename='MARTIN')
→SELECT ename from emp where deptno in(SELECT deptno from dept where loc
in(SELECT loc from dept where deptno in(select deptno from emp where empno in(select mgr
from emp where ename='ADAMS'))) );
18. DISPLAY THE JOB, MANAGER NUMBER OF EMPLOYEES WHO IS WORKING FOR JONES?
→SELECT job,mgr from emp where mgr=(SELECT empno from emp WHERE ename='JONES');
19. DISPLAY THE EMPLOYEE NAMES, HIGHER DATE, COMMISSION OF FORD'S MANAGER?
→SELECT ename,hiredate,comm from emp WHERE empno in(SELECT mgr from emp WHERE ename
='FORD');
20. DISPLAY THE NUMBER OF EMPLOYEES WHO ARE GETTING SALARY LESS THAN
THE BLAKE'S MANAGER
→SELECT count(*) from emp WHERE sal<(SELECT sal from emp WHERE empno in(SELECT
mgr from emp WHERE ename ='BLAKE'));
21. LIST EMPLOYEES WHO LOCATED IN CHICAGO AND THEIR COMMISSION IS ZERO.
→SELECT * from emp where deptno =(SELECT deptno from dept WHERE loc='CHICAGO') and
comm=0;
22. LIST EMPLOYEES WHO WORK FOR SALES DEPARTMENT AND THEIR SALARY
GREATER THAN AVERAGE SALARY OF THEIR DEPARTMENT.
→ SELECT * FROM EMP WHERE DEPTNO = (SELECT DEPTNO FROM DEPT WHERE
DNAME='SALES') AND SAL > ANY (SELECT AVG(SAL) FROM EMP GROUP BY DEPTNO);
23. LIST EMPLOYEES WHO ARE WORKING IN RESEARCH DEPARTMENT AND THEY
ARE MANAGER.
→ SELECT * from emp WHERE mgr is not null and deptno =(SELECT deptno from dept WHERE
dname='RESEARCH');
→SELECT dname from dept where deptno in (select deptno from emp WHERE comm is not null);
25. DISPLAY DEPARTMENT NAME OF THE EMPLOYEE WHO EARN MAXIMUM SALARY
AND HAVE NO REPORTING MANAGER.
→SELECT dname from dept where deptno in (select deptno from emp WHERE sal=(SELECT max(sal)
from emp) and mgr is null);
→ SELECT ename from emp WHERE sal > all(SELECT sal from emp where deptno
!=10);SELECT * from emp WHERE mgr in(SELECT empno from emp where
ename='BLAKE') and comm>=0;
27. LIST ALL THE DEPTNAME AND LOC OF ALL THE SALESMAN MANAGER-MANAGER'S
→ SELECT dname from dept where deptno in (SELECT deptno from emp where empno in(select mgr
from emp where empno in (SELECT mgr from emp where job='SALESMAN')));
28. LIST THE EMPLOYEE DEPTNAME AND LOC OF ALL THE EMPLOYEES WHO ARE
CLERK ,REPORTING TO BLAKE AND SALARY IS LESSER THAN MARTIN SALARY
→ SELECT dname from dept where deptno in (select deptno from emp WHERE job='CLERK' and
mgr in(SELECT empno from emp where ename='BLAKE') and sal< (SELECT sal from emp where
ename='MARTIN'));
29. LIST THE EMPLOYEES WHO DOES NOT DIRECTLY REPORT TO PRESIDENT,HAVE
COMMISSION AND SALARY MORE THAN MAX SALARY OF ALL THE CLERK
WITHOUT USING NULL OR NOT NULL
→SELECT ename from emp where mgr in(select empno from emp where mgr in(SELECT
empno from emp where job='PRESIDENT')) and comm >=0 and sal>(select max(sal) from emp
where job='CLERK');
30. LIST THE EMPLOYEES WHO JOINED AFTER 2 YEARS OF FIRST EMPLOYEE OF
THE COMPANY AND MORE THAN BLAKE SALARY
→ SELECT loc FROM dept WHERE deptno in (SELECT deptno from emp where mgr in (SELECT
empno from emp WHERE ename='BLAKE'));
32. LIST ALL THE EMPLOYEES WHOSE JOB IS SAME AS JONES AND THEIR SALARY
LESSER THAN SCOTT
→ SELECT * FROM emp WHERE job=(SELECT job from emp WHERE ename='JONES') and sal <
(SELECT sal FROM emp WHERE ename ='SCOTT');
33.DISPLAY ALL THE EMPLOYEES OF DEPARTMENT 30, 20 WITH THERE ANUAL
SALARY AND HAVING ATLEAST 3 EMPLOYEES
34.DISPLAY ALL THE EMPLOYEES WHO ARE EARN LESS THAN ANY OF THE SALESMAN?
→SELECT * from emp where sal< any (SELECT sal from emp where job='SALESMAN');
35.DISPLAY ALL THE EMPLOYEES WHO ARE JOINED BEFORE THE LAST PERSON?
→ SELECT * FROM emp WHERE hiredate=(SELECT max(hiredate) from emp WHERE hiredate
<(SELECT max(hiredate) from emp));
→ SELECT min(sal) FROM emp WHERE sal>(SELECT min(sal) from emp WHERE sal >(SELECT
min(sal) from emp));
36.DISPLAY ALL THE EMPLOYEES WHO ARE EARNING MORE THAN ANY OF THE MANAGER.
→SELECT * from emp where sal> any (SELECT sal from emp where job='MANAGER');
→SELECT loc from dept where deptno in(SELECT deptno from emp WHERE ename not LIKE
'A%' and sal BETWEEN 1001 and 2999);
40. DISPLAY DEPARTMENT NAME OF ALL THE EMPLOYEES WHO ARE REPORTING
TO BLAKE.
→SELECT dname from dept where deptno in(SELECT deptno from emp WHERE mgr in(select
empno from emp where ename='BLAKE'));
→SELECT dname,loc from dept where deptno in(SELECT deptno from emp WHERE empno =(select mgr
from emp where empno=(SELECT mgr from emp where ename='MARTIN')));
→SELECT mgr, job, deptno from emp where deptno in(SELECT deptno from dept WHERE
loc='CHICAGO' or loc='DALLAS') and comm is null;
43.DISPLAY THE EMPLOYEE DETAILS WITH THEIR ANNUAL SALARY WHO EARN
MAXIMUM COMMISSION
→SELECT *,emp.sal*12 annual from emp where comm=(SELECT max(comm) from emp);
44.DISPLAY ALL THE EMPLOYEE WHOSE DEPARTMENT IS SALES AND WHO IS
EARNING SOME COMMISSION (I.E COMMISSION
IS NOT NULL OR ZERO)AND WHO IS HIRED BEFORE THE LAST PERSON HIRED.
→SELECT * from emp where comm is NOT null and deptno=(SELECT deptno from dept where
dname='SALES') and hiredate=(SELECT max(hiredate) from emp WHERE hiredate <(SELECT
max(hiredate) from emp));
→SELECT dname from dept where deptno in (SELECT deptno from emp where empno=(SELECT mgr
from emp where empno=(select mgr from emp where ename='WARD')));
46:DISPLAY DEPARTMENT NAMES OF EMPLOYEE'S WHOSE SALARY IS GREATER
THAN AVERAGE SALARY OF ALL THE CLERK'S
→SELECT dname from dept where deptno in (SELECT deptno from emp where sal in(SELECT sal
from emp where sal> all(select avg(sal) from emp where job='CLERK')));
→ SELECT deptno from dept WHERE dname='SALES' and deptno in(select deptno from emp
where job='MANAGER');
→ SELECT dname from dept WHERE deptno in(SELECT deptno from emp WHERE sal=(SELECT
min(sal) from emp WHERE mgr is not null));
50.DISPLAY HIREDATE AND JOB OF ALL THE EMPLOYEES WORKING FOR SALES
→ SELECT hiredate, job from emp WHERE deptno=(SELECT deptno from dept WHERE
dname='SALES');
→ SELECT loc,dname from dept WHERE deptno=(SELECT deptno from emp WHERE
job='PRESIDENT');
→ SELECT dname from dept WHERE deptno in(SELECT deptno from emp WHERE sal
in(SELECT max(sal) from emp where sal<3000) );
→ SELECT dname from dept WHERE deptno in( SELECT deptno from emp where mgr in (SELECT
empno from emp WHERE ename='ADAMS'));
55.DISPLAY ALL THE EMPLOYEE WHOSE SALARY IS GREATER THAN AVERAGE SALARY
OF DEPARTMENT 30.
→ SELECT avg(sal), emp.* from emp where deptno=30 GROUP by deptno HAVING avg(sal) > sal;
56.DISPLAY THE NUMBER OF EMPLOYEES WHO WORK FOR RESEARCH DEPT AND
THEIR SALARY IS LESSER THAN ONE OF THE SALARY IN DEPARTMENT IN 10.
→ SELECT count(*) from emp where deptno =(SELECT deptno from dept where
dname='RESEARCH') and sal < any(SELECT sal from emp WHERE deptno =10);
→ SELECT dname from dept WHERE deptno in (SELECT deptno from emp where job='CLERK');
58.DISPLAY THE DEPARTMENT NAMES THAT ARE HAVING ATLEAST ONE L IN IT.
59. DISPLAY ALL THE EMPLOYEES WHO ARE JOINED AFTER BLAKE.
→ SELECT * from emp WHERE hiredate>(SELECT hiredate from emp where ename='BLAKE');
60. LIST THE DEPT NAME THAT ARE HAVING AT LEAST 3 EMPLOYEES BUT NOT
MORE THAN 5 EMPLOYEES IN IT.
→ SELECT DNAME FROM DEPT WHERE DEPTNO IN (SELECT DEPTNO FROM EMP
GROUP BY DEPTNO HAVING COUNT(*) BETWEEN 3 AND 5);
61. DISPLAY THE LOCATION OF ALL EMPLOYEES WHOSE REPORTING MANAGER SALARY
IS GREATER THAN 2000.
→ SELECT loc from dept where deptno in (SELECT deptno from emp where mgr in (SELECT empno
from emp where sal>2000));
62.SELECT THE EMPLOYEES WHOSE DNAME IS HAVING AT LEAST TWO 'E' IN IT.
→ SELECT ename,dname from emp,dept where emp.DEPTNO=dept.DEPTNO and dname like '%E%E%';
→ SELECT ename,sal from emp where sal > any(SELECT sal from emp where job='ANALYST');
→ SELECT * from emp where deptno in(SELECT deptno from dept where loc='CHICACO');
→ SELECT ename from emp where sal=(SELECT min(sal) from emp where
deptno=(SELECT deptno from dept where dname='RESEARCH'));
→ SELECT dname from dept where deptno in(SELECT deptno from emp where job='SALESMAN');
67. LIST THE DEPARTMENT NAMES THAT ARE HAVING AT LEAST 3 EMPLOYES IN IT.
→ SELECT dname from dept where deptno in(SELECT deptno from emp GROUP by deptno HAVING
count(*)>2);
68.LIST EMPLOYEES FROM RESEARCH AND ACCOUNTING DEPARTMENT HAVING
ATLEAST TWO REPORTING
→ SELECT * from emp where deptno in(SELECT deptno from dept WHERE dname
in('RESEARCH','ACCOUNTING')) and empno in(SELECT mgr from emp GROUP BY mgr HAVING
count(*)>1);
70. SELECT ENAME OF EMPLOYEE WHO EARNS 2ND MAX SALARY AND WORKS
FOR LOCATION DALLAS.
→ SELECT ename from emp WHERE sal=(SELECT max(sal) from emp where sal<(SELECT
max(sal) from emp)) and deptno=(SELECT deptno from dept where loc='DALLAS');
71. WRITE A QUERY TO DISPLAY THE EMPLOYEE INFORMATION WHO IS NOT
TAKING COMMISSION AND JOINED COMPANY AFTER JULY 83.
→ SELECT * from emp WHERE comm is not null and hiredate > '31JUN83';
80. DISPLAY THE EMPLOYEE NUMBER AND NAME OF EMPLOYEE WORKING AS CLERK
AND EARNING HIGHEST SALARY AMONG CLERKS.
→ SELECT empno,ename from emp WHERE job='CLERK' and sal =(SELECT max(sal) from emp
WHERE job='CLERK');
83. LIST THE DEPARTMENT NAMES IN WHICH THE EMPLOYEES ARE HIRED BETWEEN
1ST OF JAN 1981 AND 31ST DEC 1982 WITH SALARY MORE THAN 1800.
→ SELECT dname from dept WHERE deptno in(SELECT deptno from emp WHERE hiredate
BETWEEN '1981-01-02' and '1982-12-30' and sal>1800);
84.DISPLAY LOCATION OF THE EMPLOYEE WHO EARN MAXIMUM SALARY AND HAVE
NO REPORTING MANAGER
→ SELECT loc from dept WHERE deptno =(SELECT deptno from emp WHERE sal=(SELECT
max(sal) from emp WHERE mgr is null));
85. LIST EMPLOYEES WHO WORKS FOR ACCOUNTING DEPARTMENT AND THEIR
SALARY GREATER THAN AVERAGE SALARY OF THEIR DEPARTMENT
→ SELECT * from emp WHERE deptno=(SELECT deptno from dept WHERE
dname='ACCOUNTING') and sal>(SELECT avg(sal) from emp);
89. LIST THE EMPLOYEE DEPTNAME AND LOC OF ALL THE EMPLOYEES WHO ARE
CLERK ,REPORTING TO BLAKE AND SALARY IS LESSER THAN MARTIN SALARY
→ SELECT dname,loc from dept WHERE deptno in(SELECT deptno from emp WHERE
job='CLERK' and empno in(SELECT mgr from emp where empno=(SELECT mgr from emp where
ename='BLAKE')) and sal<(SELECT sal from emp where ename ='MARTIN'));
90. DISPLAY LOC AND DNAME WHOSE JOB IS MANAGER AND HAS SAL LESS THAN CLERK.
→ SELECT dname,loc from dept WHERE deptno in(select deptno from emp where job='MANAGER'
AND sal <(SELECT sal from emp WHERE job='CLERK'));
92.DISPLAY EMPNO, ENAME, JOB, WHOSE JOB HAS 'E' IN IT AND DISPLAY EMPNO
IN DESCENDING ORDER.
→SELECT empno, ename, job from emp WHERE job like '%E%' order by empno desc;
94. DISPLAY AVG SALARY OF ALL EMPLOYEES WHOSE DEPT NAME IS ACCOUNTING???
→SELECT avg(sal) from emp where deptno =(SELECT deptno from dept WHERE dname
='ACCOUNTING');
98. LIST THE EMPLOYEES WHOSE DAILY SALARY IS GREATER THAN 1500 AND WHO
ARE JOINED BEFORE 1982 ONLY.
→SELECT ename FROM emp WHERE sal/30 >1500 AND hiredate <'01-JAN-82';
100. LIST THE EMPLOYEES WHOSE DAILY SALARY IS GREATER THAN 1500 AND WHO
ARE JOINED BEFORE 1982 ONLY.
→SELECT ename FROM emp WHERE sal/30 >1500 AND hiredate <'01-JAN-82';
101. DISPLAY ALL THE EMPLOYEES WHOSE JOB SAME AS 'SMITH' AND DEPARTMENT
SAME AS 'JONES' AND SALARY MORE THAN 'TURNER'
→SELECT ename from emp WHERE job=(select job from emp where ename='SMITH') and deptno
=(SELECT deptno from dept where deptno in(SELECT deptno from emp WHERE ename ='JOANS'))
and sal>(SELECT sal from emp WHERE ename='TURNER');
102. DISPLAY ALL THE EMPLOYEES WHOSE NAME START WITH 'S' AND HAVING
SALARY MORE THAN 'ALLEN' AND LESS THAN FORD
-→SELECT ename from emp WHERE ename like 'S%' and sal >(SELECT sal from emp where
ename='ALLEN') and sal<(SELECT sal from emp WHERE ename='FORD');
103. DISPLAY ALL THE CLERKS AND ANALYST WHO ARE NOT WORKING FOR 'DALLAS'
→SELECT * from emp WHERE job in('CLERK','ANYLYST') and deptno not in(SELECT deptno from
dept WHERE loc='DALLAS');
107.DISPLAY THE DEPT NAME OF THE EMP WHO GETS 3 RD MAXIMUM SALARY
→SELECT dname from dept WHERE deptno in(SELECT deptno from emp WHERE sal=(SELECT
max(sal) from emp WHERE sal<(SELECT max(sal) from emp WHERE sal<(SELECT max(sal) from
emp))));
108. DISPLAY ALL THE EMPLOYEES WHO ARE EARNING MORE THAN ALL
THE MANAGERS(JOB).
→SELECT ename from emp WHERE sal>all(SELECT sal from emp where
job='MANAGER');
109. DISPLAY ALL THE EMPLOYEES WHO ARE EARNING MORE THAN ANY OF
THE MANAGER(JOB)
→SELECT ename from emp WHERE sal>any(SELECT sal from emp where
job='MANAGER');
110. SELECT EMPNO, JOB AND SALARY OF ALL THE ANALYST WHO ARE EARNING
MORE THAN ANY OF THE MANAGER(JOB)
→ SELECT empno,job,sal from emp WHERE job='ANALYST' and sal>any(SELECT sal from emp
where job='MANAGER');
111. SELECT THE DEPARTMENT NAME AND LOCATION OF ALL THE EMPLOYEES
WORKING FOR CLARK.
→ SELECT dname,loc from dept WHERE deptno in(SELECT deptno from emp WHERE mgr
in(SELECT empno from emp WHERE ename='CLARK'));