더북(TheBook)

코드 9-3의 쿼리처럼 1위에 해당하는 영화 전체를 대상으로 AVG() 함수를 사용해야 1위 영화들의 평균 매출액을 구할 수 있습니다. 그럼 이제 코드 9-1의 결과 중에서 코드 9-3의 결괏값보다 매출액이 큰 건을 가져오면 됩니다. 어떻게 하면 될까요?

코드 9-3의 결괏값을 기억했다가 코드 9-1의 WHERE 절에 AND a.sale_amt > 81906468809.5처럼 조건을 걸면 될까요? 올바른 방법이 아닙니다. 바로 이때에 서브쿼리를 사용합니다. 코드 9-3의 쿼리를 코드 9-1의 쿼리 어딘가에 집어넣고 평균 매출액과 각 영화의 매출액을 비교해야 합니다.

이처럼 두 단계 이상 연산해서 결과 집합을 추출해야 할 때 서브쿼리를 사용합니다. 여기서는 평균 매출액을 구하는 것이 1단계였다면 이 값을 다시 메인쿼리와 비교하는 것이 2단계입니다. 결국 여러 단계에 거쳐 연산한 값으로 최종 결과 집합을 조회할 때 서브쿼리를 사용합니다.

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