개요
서브 쿼리는 SELECT, INSERT, UPDATE, DELETE 문이나 다른 하위 쿼리 내부에 중첩된 SELECT 쿼리이다.
subquery는 식이 허용되는 모든 위치에서 사용할 수 있으며 단독으로 실행 가능하다.
WITH tmp(
SELECT TO_CHAR(sDate, 'YYYY') 년도, s.cNum, cName, SUM(bPrcie * qty) 금액 RANK() OVER(PARTITION BY TO_CHAR(sDate, 'YYYY') ORDER BY SUM(bPrcie * qty ) DESC) 순위 -- 실행이 이루어져야 하는 쿼리
);
###단일 행 서브 쿼리
SELECT AVG(sal) FROM emp; -- 하나의 행과 하나의 값
SELECT empNo, name, sal
FROM emp
WHERE sal < (SELECT AVG(sal) FROM emp); -- 평균보다 급여를 적게 받는 사람
###다중 행 서브 쿼리
SELECT DISTINCT bCode FROM dsale;
SELECT bCode, bName
FROM book
WHERE bCode IN(SELECT DISTINCT bCode FROM dsale);
SELECT empNo, name, sal
FROM emp
WHERE SAL > ANY(2000000, 25000000, 25000000);
SELECT empNo, name, sal
FROM emp
WHERE SAL > ALL(2000000, 25000000, 30000000);
SELECT bName FROM book
WHERE EXISTS ( SELECT * FROM dsale WHERE qty >= 10);