-
서브쿼리 Subquery프로그래밍/DBMS 2021. 8. 16.반응형
WITH 서브 쿼리
WITH tmp AS ( SELECT b.bCode, bName, bPrice, b.pNum, pName, sDate, s.cNum, cName, qty, bPrice * qty amt FROM book b JOIN pub p ON b.pNum = p.pNum JOIN dsale d ON b.bCode = d.bCode JOIN sale s ON d.sNum = s.sNum JOIN cus c ON s.cNum = c.cNum ) SELECT bCode, bName, SUM(amt) FROM tmp GROUP BY bCode, bName;
단일 행 서브쿼리
SELECT empNo, sal FROM emp WHERE sal < (SELECT AVG(sal) FROM emp);
다중 행 서브쿼리
SELECT bCode, bName FROM book WHERE bCode IN ( SELECT DISTINCT bCode FROM dsale );
SELECT empNo, name, sal FROM emp WHERE sal > ALL ( 2000000, 3000000, 4000000 );
ALL은 모두 만족 시켜야 한다.
SELECT bName FROM book WHERE EXISTS ( SELECT * FROM dsale WHERE qty >= 10 ); -- 다음과 동일 : qty >= 10 인 레코드가 존재하므로 SELECT bName FROM book;
상호 연관 서브쿼리
(성능은 안좋음)
SELECT name, sal, ( SELECT COUNT( e2.sal ) + 1 FROM emp e2 WHERE e2.sal > e1.sal ) 순위 FROM emp e1;
반응형'프로그래밍 > DBMS' 카테고리의 다른 글
시퀀스 SEQUENCE (0) 2021.08.18 VIEW(뷰), SYNONYM(시노님) (0) 2021.08.17 JOIN (INNER JOIN / OUTER JOIN) (0) 2021.08.13 제약 조건 / PRIMARY KEY / FOREIGN KEY (0) 2021.08.12 테이블(2) 데이터 조작 (추가, 수정, 삭제) (0) 2021.08.11