[sql] 서브쿼리에서 상관 서브쿼리의 활용 방법

서브쿼리(Subquery)는 다른 쿼리 안에 중첩된 쿼리로, 데이터베이스에서 특정 조건을 만족하는 결과셋을 가져오기 위해 활용됩니다. 상관 서브쿼리(Correlated Subquery)는 외부 쿼리와 상호작용하며 각 행마다 실행되는 서브쿼리입니다. 이번 블로그에서는 상관 서브쿼리의 활용 방법을 살펴보겠습니다.

상관 서브쿼리 개념

상관 서브쿼리는 주로 외부 쿼리의 결과에 따라 조건이 동적으로 변하는 경우에 활용됩니다. 각 행에 대해 외부 쿼리의 조건값을 이용하여 서브쿼리를 수행하고, 이를 통해 필요한 결과를 얻을 수 있습니다. 상관 서브쿼리를 사용하면 데이터베이스에서 복잡한 조인 또는 일련의 셀프 조인을 해결할 수 있으며, 항상 최신 데이터로 작업할 수 있습니다.

예제

다음은 상관 서브쿼리의 간단한 예제입니다. 우리는 employees 테이블에서 각 부서(department_id)별로 가장 높은 급여를 받는 직원의 정보를 얻고 싶습니다.

SELECT employee_id, first_name, last_name, salary, department_id 
FROM employees e1 
WHERE salary = (
    SELECT MAX(salary) 
    FROM employees 
    WHERE department_id = e1.department_id
);

위의 쿼리에서, 외부 쿼리(e1)와 서브쿼리가 상호작용합니다. 서브쿼리는 외부 쿼리의 각 행에서 실행되며, 외부 쿼리의 department_id와 일치하는 행에서 가장 높은 급여를 찾습니다.

결론

상관 서브쿼리는 복잡한 데이터 필터링 및 집계 작업에 유용한 도구입니다. 그러나 적절한 사용과 최적화가 필요하며, 잘못 활용하면 성능 저하를 야기할 수 있습니다. 상