Database/Oracle
[SQL-Oracle]서브쿼리(Subquery) 실습 예제👩💻
sukii
2023. 11. 30. 18:29
반응형
⬛서브쿼리(Subquery) 실습 예제 👩💻
--문제1)사원 테이블에서 BLAKE보다 급여가 많은 사원들의 사번, 이름, 급여를 검색하시오.
SELECT EMPNO, ENAME, SAL
FROM EMP
WHERE SAL>(SELECT SAL FROM EMP WHERE ENAME='BLAKE');
--문제2)사원 테이블에서 MILLER보다 늦게 입사한 사원의 사번, 이름, 입사일을 검색하시오.
SELECT EMPNO, ENAME, HIREDATE
FROM EMP
WHERE HIREDATE>(SELECT HIREDATE FROM EMP WHERE ENAME='MILLER');
--문제3)사원 테이블에서 사원 전체 평균 급여보다 급여가 많은 사원들의 사번, 이름, 급여를 검색하시오.
SELECT EMPNO, ENAME, SAL
FROM EMP
WHERE SAL>(SELECT AVG(SAL) FROM EMP);
--문제4)사원 테이블에서 CLARK와 같은 부서이며, 사번이 7698인 직원의 급여보다 많은 급여를 받는 사원들의 사번, 이름, 급여를 검색하시오.
SELECT EMPNO, ENAME, SAL
FROM EMP
WHERE DEPTNO=(SELECT DEPTNO FROM EMP WHERE ENAME='CLARK')
AND SAL>(SELECT SAL FROM EMP WHERE EMPNO=7698);
SELECT AVG(SAL) FROM EMP;
--문제5)사원 테이블에서 부서별 최대 급여를 받는 사원들의 사번, 이름, 부서코드, 급여를 검색하시오.
--내가 쓴 답)
--현재 결과는 잘 나오지만, 실행 오류 가능성 있음.
SELECT EMPNO, ENAME, DEPTNO, SAL
FROM EMP
WHERE SAL IN (SELECT MAX(SAL) FROM EMP GROUP BY DEPTNO);
--정답)
SELECT EMPNO, ENAME, DEPTNO, SAL
FROM EMP E1
WHERE SAL IN (SELECT MAX(SAL) FROM EMP E2 WHERE E1.DEPTNO=E2.DEPTNO GROUP BY DEPTNO);
반응형