SQL

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

devorldist 2022. 6. 1. 22:55
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