[sql] INTERSECT 연산자를 사용한 더 복잡한 쿼리 작성 방법

SQL의 INTERSECT 연산자는 두 개의 SELECT 문의 결과에서 공통된 결과만을 반환하는 기능을 제공합니다. 이를 통해 더 복잡한 쿼리를 작성할 수 있으며, 다양한 용도로 활용할 수 있습니다.

INTERSECT 연산자의 사용법

INTERSECT 연산자는 다음과 같은 구문으로 사용할 수 있습니다.

SELECT column1, column2, ...
FROM table1
INTERSECT
SELECT column1, column2, ...
FROM table2;

위의 예제에서는 table1과 table2라는 두 개의 테이블에서 column1, column2 등의 컬럼을 선택한 후, INTERSECT 연산자를 사용하여 공통된 결과만을 반환합니다.

INTERSECT 연산자의 작동 방식

INTERSECT 연산자는 두 개의 SELECT 문의 결과를 비교하여 공통된 결과를 반환합니다. 이때, 결과는 중복을 허용하지 않으며, 컬럼의 값과 자료형이 일치해야 합니다.

또한, INTERSECT 연산자는 첫 번째 SELECT 문의 결과에만 적용됩니다. 따라서, 첫 번째 SELECT 문에서 선택한 컬럼에 따라 결과가 달라질 수 있습니다.

더 복잡한 쿼리 작성하기

INTERSECT 연산자를 사용하여 더 복잡한 쿼리를 작성할 수 있습니다. 예를 들어, 다음과 같은 상황을 가정해봅시다.

이때, 부서별로 최고 연봉을 받는 사원들을 찾고 싶다면 다음과 같은 쿼리를 작성할 수 있습니다.

SELECT employee_name, employee_salary
FROM table1
WHERE employee_salary = (
  SELECT MAX(employee_salary)
  FROM table1
  WHERE table1.department_id = table2.department_id
)
INTERSECT
SELECT employee_name, employee_salary
FROM table2;

위의 예제에서는 table1에서 최고 연봉을 받는 사원들을 찾기 위해 서브쿼리를 사용하였고, 이후 INTERSECT 연산자를 사용하여 table2와의 공통된 결과만을 반환하도록 했습니다.

이와 같이 INTERSECT 연산자를 활용하면 다양한 복잡한 쿼리를 작성할 수 있으며, 데이터의 교집합을 구하는데 유용합니다.

더 자세한 내용은 SQL INTERSECT 연산자 문서를 참고하시기 바랍니다.