본문 바로가기
SQL

오라클 서브 쿼리 연습 Oracle Subquery practice

by devorldist 2022. 6. 1.
728x90
반응형
SMALL

1. 사원번호가 7788인 사원과 담당 업무가 같은 사원을 표시

SELECT ENAME, JOB

FROM EMPLOYEE

WHERE JOB = (SELECT JOB

FROM EMPLOYEE

WHERE ENO=7788);

 

2. 사원번호가 7499인 사원보다 급여가 많은 사원을 표시

SELECT ENAME, JOB

FROM EMPLOYEE

WHERE SALARY > (SELECT SALARY

FROM EMPLOYEE

WHERE ENO=7499);

 

3. 최소 급여를 받는 사원의 이름, 담당업무, 급여 표기

SELECT ENAME, JOB, SALARY

FROM EMPLOYEE

WHERE SALARY = (SELECT MIN(SALARY)

FROM EMPLOYEE);

 

4. 평균 급여가 가장 적은 사원의 담당업무를 찾아 직급과 평균 급여 표시

SELECT JOB, ROUND(AVG(SALARY), 1)

FROM EMPLOYEE

GROUP BY JOB

HAVING ROUND(AVG(SALARY), 1) = (SELECT MIN(ROUND(AVG(SALARY), 1))

FROM EMPLOYEE

GROUP BY JOB);

 

5. 각 부서의 최소 급여를 받는 사원의 이름, 급여, 부서번호 표시

SELECT ENAME, SALARY, DNO

FROM EMPLOYEE

WHERE SALARY IN (SELECT MIN(SALARY)

FROM EMPLOYEE

GROUP BY DNO);

 

6. 담당 업무가 분석가인 사원보다 급여가 적으면서, 업무가 분석가가 아닌 사원들을 표시

SELECT ENO, ENAME, JOB, SALARY

FROM EMPLOYEE

WHERE SALARY< ANY (SELECT SALARY

FROM EMPLOYEE

WHERE JOB='ANALYIST')

AND JOB != 'ANALYIST';

 

7. 부하직원이 없는 사원의 이름 표시

SELECT ENAME

FROM EMPLOYEE

WHERE ENO IN (SELECT ENO

FROM EMPLOYEE

WHERE MANAGER IS NULL);

 

8. 부하직원이 있는 사원의 이름 표시

SELECT ENAME

FROM EMPLOYEE

WHERE ENO IN (SELECT ENO

FROM EMPLOYEE

WHERE MANAGER IS NOT NULL);

 

10. BLAKE와 동일한 부서에 속한 사원의 이름과 입사일을 표시하는 질의 작성. BLAKE는 제외

SELECT ENAME, HIREDATE

FROM EMPLOYEE

WHERE DNO=(SELECT DNO

FROM EMPLOYEE

WHERE ENAME='BLAKE')

AND ENAME!='BLAKE';

 

11. 급여가 평균 급여보다 많은 사원들의 사원번호와 이름을 표시하되 결과가 급여에 대해서 오름차순으로 정렬

SELECT ENO, ENAME

FROM EMPLOYEE

WHERE SALARY > (SELECT AVG(SALARY)

FROM EMPLOYEE)

ORDER BY SALARY;

 

11. 이름에 K가 포함된 사원과 같은 부서에서 일하는 사원의 사원번호와 이름을 표시하는 질의 작성

SELECT ENO, ENAME

FROM EMPLOYEE

WHERE DNO IN (SELECT DNO

FROM EMPLOYEE

WHERE ENMAE LIKE '%K%');

 

12. 부서위치가 DALLAS인 사원의 이름과 부서번호, 담당업무를 표시

SELECT ENAME, DNO, JOB

FROM EMPLOYEE

WHERE DNO = (SELECT DNO

FROM DEPARTMENT

WHRER LOC='DALLAS');

 

13. KING에게 보고하는 사원의 이름과 급여 표시

SELECT ENAME, SALARY

FROM EMPLOYEE

WEHRE MANAGER = (SELECT ENO

FROM EMPLOYEE

WHERE ENAME='KING');

 

14. RESEARCH 부서의 사원에 대한 부서번호, 사원이름, 담당업무 표시

SELECT DNO, ENAME, JOB

FROM EMPLOYEE

WHERE DNO = (SELECT DNO

FROM DEPARTMENT

WHERE DNAME = 'RESERCH');

 

15. 평균 급여보다 많은 급여를 받고 이름에 M이 포함된 사원과 같은 부서에서 근무하는 사원의 사원번호, 이름, 급여를 표시

SELECT ENO, ENAME, SALARY

FROM EMPLOYEE

WHERE SALARY > (SELECT AVG(SALARY)

FROM EMPLOYEE)

AND DNO IN (SELECT DNO

FROM EMPLOYEE

WHERE ENAME LIKE "%M%');

 

16. 평균 급여가 가장 적은 업무 표시

SELECT JOB, AVG(SALARY)

FROM EMPLOYEE

GROUP BY JOB

WHERE AVG(SALARY) = (SELECT MIN(AVG(SALARY))

FROM EMPLOYEE

GROUNP BY JOB);

 

17. 담당 업무가 MANAGER인 사원이 소속된 부서와 동일한 부서의 사원을 표시

SELECT ENAME

FROM EMPLOYEE

WHERE ENO IN (SELECT MANAGER --MANAGER 컬럼에는 관리자의 ENO가 들어있음.

FROM EMPLOYEE);

 

출처 : ORACLE 11G PROGRAMMING

728x90
반응형
LIST