SQL을 활용한 데이터 분석

서브 쿼리

서브 쿼리

서브 쿼리의 기본 개념

  • 서브 쿼리는 하나의 SELECT 문장의 절 안에 포함된 또 하나의 SELECT 문장을 의미한다.
  • 서브 쿼리를 포함하고 있는 쿼리문을 메인 쿼리, 포함된 또 하나의 쿼리를 서브 쿼리라 한다.
  • 서브 쿼리는 비교 연산자의 오른쪽에 기술해야 하고 반드시 괄호로 둘러 쌓아야 한다.

단일 행 서브 쿼리

  • 단일 행(Single Row) 서브 쿼리는 수행 결과가 오직 하나의 로우(행, row)만을 반환하는 서브 쿼리를 갖는 것을 말한다.
  • 단일 행 서브 쿼리문에서는 이렇게 오직 하나의 로우(행, row)로 반환되는 서브 쿼리의 결과는 메인 쿼리에 보내게 되는데 메인 쿼리의 WHERE 절에서는 단일 행 비교 연산자인 =,>,>=,<,<=,<> 를 사용해야 한다.

다중 행 서브 쿼리

  • 하나 이상의 행을 반환하는 서브 쿼리
  • 단일 행 연산자를 사용하지 못하며, 다중 행 연산자(IN, NOT IN, ANY, ALL, EXISTS)만 사용이 가능하다.
  • 서브 쿼리에서 반환되는 결과가 하나 이상의 행일 때 사용하는 서브 쿼리이다. 다중 행 서브 쿼리는 반드시 다중 행 연산자와 함께 사용해야 한다.
종류의미
IN메인 쿼리의 비교 조건이 서브 쿼리의 결과 중에서 하나라도 일치하면 참이다.
ANY, SOME메인 쿼리의 비교 조건인 서브 쿼리의 검색 결과와 하나 이상이 일치하면 참이다.
ALL메인 쿼리의 비교 조건이 서브 쿼리의 검색 결과와 모든 값이 일치하면 참이다.
EXIST메인 쿼리의 비교 조건이 서브 쿼리의 결과 중에서 만족하는 값이 하나라도 존재하면 참이다. 조건을 만족하면 TRUE 아니면 FALSE만 체크한다.

ANY 연산자

  • ANY 조건은 메인 쿼리의 비교 조건이 서브 쿼리의 검색 결과와 하나 이상만 일치하면 참이다.
  • ” > ANY “는 찾아진 값에 대해서 하나라도 크면 참이 된다. 그러므로 찾아진 값 중에서 가장 작인 값 즉, 최소 값 보다 크면 참이 된다.

ALL 연산자

  • ALL 조건은 메인 쿼리의 비교 조건이 서브 쿼리의 검색 결과와 모든 값이 일치하면 참이다.
  • 찾아진 값에 대해서 AND 연산을 해서 모두 참이면 참이 되는 셈이 됩다. “ > ALL “은 “모든 비교값 보다 크냐”고 묻는 것이 되므로 최대값보다 더 크면 참이 된다.

스칼라 서브쿼리(Scalar Subquery)

  • SELECT 절에 위치한 서브 쿼리
  • 한 개의 로우만 반환
  • 일치하는 값이 없는 경우 NULL은 반환

© 2020. All rights reserved.

SIKSIK