[Database] 실행 결과가 하나인 단일 행 서브쿼리

 단일 행 서브쿼리 


단일 행 서브쿼리 (single-row subquery)는 실행 결과가 단 하나의 행으로 나오는 서브 쿼리를 뜻 합니다 . 서브 쿼리에서 출력되는 결과가 하나이므로 메인쿼리와 서브쿼리 결과는 다음과 같이 단일행 연산자를 사용하여 비교합니다 . 


단일행 서브쿼리와 날짜형 데이터

단일행 서브쿼리는 서브쿼리 결과 값이 날짜(DATE) 자료형일 때도 사용가능 합니다 . 


서브쿼리의 결과 값이 날짜형인 경우 
SELECT * FROM EMP
  WHERE HIREDATE < (SELECT HIREDATE
                        FROM EMP
                      WHERE ENAME = 'SCOTT');




단일형 서브쿼리와 함수 

또한 서브쿼리에서 특정 함수를 사용한 결과 값이 하나일 때 역시 단일행 서브쿼리로서 사용가능합니다 . 
예를 들어 20번 부서에 속한 사원중 전체 사원의 평균 급여보다 높은 급여를 받는 사원정보와 소속 부서 정보를 함께 조회하는 경우를 생각해 봅시다 
이 경우에 다음과 같이 EMP 테이블과 조인한 SELECT 문에 서브쿼리를 적용하여 출력할 수 있습니다 . 




서브쿼리 안에서 함수를 사용
SELECT E.EMPNO, E.ENAME, E.JOB, E.SAL, D.DEPTNO, D.DNAME, D.LOC
        FROM EMP E, DEPT D
      WHERE E.DEPTNO = D.DEPTNO
        AND E.DEPTNO = D.DEPTNO
        AND E.SAL > (SELECT AVG(SAL)
                      FROM EMP);