[sql] 서브쿼리를 사용한 데이터 합치기
일반적으로 SQL에서 두 개 이상의 테이블에 쿼리를 실행하여 데이터를 결합할 때 JOIN
을 사용합니다.하지만 때로는 서브쿼리를 사용하여 데이터를 결합해야 하는 경우가 있습니다.
서브쿼리 소개
서브쿼리는 다른 쿼리 내부에 중첩된 쿼리를 말합니다. 이를 사용하여 외부 쿼리의 결과에 따라 내부 쿼리의 로직을 동적으로 변경할 수 있습니다.
예시
예를 들어, employees
와 departments
두 개의 테이블이 있다고 가정해보겠습니다. 모든 부서의 평균 연봉보다 높은 연봉을 받는 직원들을 찾고 싶다고 가정해봅시다.
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을 더 잘 이해하고 활용하기 위한 강력한 도구이며, 적절하게 활용한다면 데이터 분석 작업을 보다 효과적으로 수행할 수 있습니다.