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);
반응형