먼저 가장 간단한 형태의 조건 서브쿼리 사용법을 알아봅시다.
코드 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년 개봉 영화의 최대 매출액과 크거나 같은 건을 조회하는 쿼리입니다.