[sql] 서브쿼리를 사용한 데이터 합치기

일반적으로 SQL에서 두 개 이상의 테이블에 쿼리를 실행하여 데이터를 결합할 때 JOIN을 사용합니다.하지만 때로는 서브쿼리를 사용하여 데이터를 결합해야 하는 경우가 있습니다.

서브쿼리 소개

서브쿼리는 다른 쿼리 내부에 중첩된 쿼리를 말합니다. 이를 사용하여 외부 쿼리의 결과에 따라 내부 쿼리의 로직을 동적으로 변경할 수 있습니다.

예시

예를 들어, employeesdepartments 두 개의 테이블이 있다고 가정해보겠습니다. 모든 부서의 평균 연봉보다 높은 연봉을 받는 직원들을 찾고 싶다고 가정해봅시다.

SELECT employee_name, salary 
FROM employees 
WHERE salary > (
    SELECT AVG(salary) 
    FROM employees 
    GROUP BY department_id
    HAVING department_id = employees.department_id
);

위의 예시에서, 외부 쿼리는 employees 테이블에서 직원들의 이름과 연봉을 선택하고, 내부 쿼리는 각 부서의 평균 연봉을 계산하여 HAVING 절을 사용하여 외부 쿼리의 결과와 비교합니다.

서브쿼리를 사용하면 특정 조건에 따라 동적으로 데이터를 필터링하거나 결합할 수 있습니다.

결론

서브쿼리를 사용하면 복잡한 데이터를 합치거나 필터링하는 작업을 간단하게 수행할 수 있습니다. 그러나 성능상의 이유로 최대한 간단한 쿼리를 만드는 것이 좋으며, 성능에 민감한 상황에서는 서브쿼리 사용 시 주의가 필요합니다.

서브쿼리는 SQL을 더 잘 이해하고 활용하기 위한 강력한 도구이며, 적절하게 활용한다면 데이터 분석 작업을 보다 효과적으로 수행할 수 있습니다.

참고 자료