문제
다음 SQL에서 서브쿼리의 실행 순서와 메인쿼리와의 관계로 가장 적절한 것은?
SQLSELECT O.ORDER_ID, O.CUSTOMER_ID FROM ORDERS O WHERE O.ORDER_AMOUNT > ( SELECT AVG(ORDER_AMOUNT) FROM ORDERS WHERE CUSTOMER_ID = O.CUSTOMER_ID ) ORDER BY O.ORDER_ID;
① 서브쿼리가 먼저 한 번 실행되고, 그 결과를 메인쿼리에서 사용 ② 메인쿼리의 각 행마다 서브쿼리가 반복 실행됨 (상관 서브쿼리) ③ 서브쿼리와 메인쿼리가 동시에 병렬로 실행됨 ④ ORDER BY가 먼저 실행된 후 서브쿼리가 실행됨
정답
2번
해설
이는 상관 서브쿼리(Correlated Subquery)입니다. 서브쿼리 내에서 메인쿼리의 테이블 별칭 O를 참조하고 있으므로, 메인쿼리의 각 행마다 서브쿼리가 반복 실행됩니다. ①은 일반 서브쿼리의 동작 방식이고, ③은 존재하지 않는 실행 방식이며, ④는 ORDER BY가 가장 마지막에 실행되므로 틀렸습니다.