더북(TheBook)

먼저 가장 간단한 형태의 조건 서브쿼리 사용법을 알아봅시다.

코드 9-18

SELECT ranks, movie_name, sale_amt
  FROM box_office
 WHERE YEAR(release_date) = 2019
   AND sale_amt >= (SELECT MAX(sale_amt)
                      FROM box_office
                     WHERE YEAR(release_date) = 2018);

실행결과

코드 9-18은 WHERE 절에 조건으로 서브쿼리가 들어 있습니다. 먼저 메인쿼리를 보면 box_office 테이블에서 2019년 개봉 영화를 조회합니다. WHERE 절의 두 번째 조건에서는 매출액이 조건 서브쿼리가 반환하는 값보다 크거나 같은 건을 조회합니다. 조건 서브쿼리를 보면 2018년 개봉 영화 중 매출액이 가장 큰 값을 MAX() 함수로 계산하죠. GROUP BY 절이 없으니 2018년 전체 영화를 대상으로 최대 매출액을 구합니다. 조건 서브쿼리만 잘라내 단독으로 실행해 보면 102666146909가 반환됩니다. 따라서 이 조건은 sale_amt >= 102666146909인지를 확인해서 2019년 개봉 영화 중 2018년 개봉 영화의 최대 매출액과 크거나 같은 건을 조회하는 쿼리입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.