서브 쿼리 - 24.09.20

수호천사임다·2024년 9월 20일

오라클

목록 보기
34/53

개요

  • 서브 쿼리는 SELECT, INSERT, UPDATE, DELETE 문이나 다른 하위 쿼리 내부에 중첩된 SELECT 쿼리이다.

  • subquery는 식이 허용되는 모든 위치에서 사용할 수 있으며 단독으로 실행 가능하다.

WITH

  • 서브쿼리를 미리 블럭으로 설정
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);

ANY(SOME)

  • 하나 이상만 일치하면 참
SELECT empNo, name, sal
FROM emp
WHERE SAL > ANY(2000000, 25000000, 25000000);

ALL

SELECT empNo, name, sal
FROM emp
WHERE SAL > ALL(2000000, 25000000, 30000000);

EXISTS

  • 조건 만족 값이 하나더라도 있으면 참
SELECT bName FROM book
WHERE EXISTS ( SELECT * FROM dsale WHERE qty >= 10);

상호 연관 서브 쿼리

0개의 댓글