[sql] INTERSECT 연산자를 사용한 조건에 맞는 데이터 필터링과 정렬 방법

개요

INTERSECT 연산자는 SQL에서 두 개 이상의 SELECT 문의 결과를 비교하여 공통된 행만 반환하는 연산자입니다. 이 연산자를 사용하면 특정 조건에 맞는 데이터를 필터링하고 원하는 순서로 정렬할 수 있습니다.

INTERSECT 연산자의 사용법

INTERSECT 연산자를 사용하기 위해 다음과 같이 두 개 이상의 SELECT 문을 작성합니다.

SELECT column1, column2, ...
FROM table1
WHERE condition1
INTERSECT
SELECT column1, column2, ...
FROM table2
WHERE condition2

예제

다음은 ‘employees’ 테이블과 ‘sales’ 테이블을 사용하여 INTERSECT 연산자를 사용하는 예제입니다.

employees 테이블 | employee_id | first_name | last_name | department | |————-|————|———–|————| | 1 | John | Smith | HR | | 2 | Jane | Doe | Sales | | 3 | Alex | Johnson | IT | | 4 | Emma | Wilson | Finance |

sales 테이블 | employee_id | product | quantity | |————-|————|———-| | 1 | Product A | 10 | | 2 | Product B | 5 | | 3 | Product C | 15 | | 5 | Product D | 20 |

다음의 SQL 쿼리는 ‘employees’와 ‘sales’ 테이블에서 department가 ‘Sales’인 행을 반환합니다.

SELECT first_name, last_name
FROM employees
WHERE department = 'Sales'
INTERSECT
SELECT first_name, last_name
FROM sales

위의 쿼리를 실행하면 다음과 같은 결과가 반환됩니다.

first_name last_name
Jane Doe

정렬

때로는 INTERSECT 연산에 의해 반환된 결과를 원하는 순서로 정렬해야 할 수 있습니다. 이를 위해 다음과 같이 ORDER BY 절을 추가할 수 있습니다.

SELECT column1, column2, ...
FROM table1
WHERE condition1
INTERSECT
SELECT column1, column2, ...
FROM table2
WHERE condition2
ORDER BY column1, column2, ...

예를 들어, 위의 예제에서 ‘employees’와 ‘sales’ 테이블에서 department가 ‘Sales’인 행을 반환한 뒤 성(last_name)과 이름(first_name)으로 오름차순으로 정렬하는 쿼리를 작성하면 다음과 같습니다.

SELECT first_name, last_name
FROM employees
WHERE department = 'Sales'
INTERSECT
SELECT first_name, last_name
FROM sales
ORDER BY last_name, first_name

위의 쿼리를 실행하면 다음과 같은 결과가 반환됩니다.

first_name last_name
Jane Doe

결론

INTERSECT 연산자를 사용하면 특정 조건에 맞는 데이터를 필터링하고 원하는 순서로 정렬할 수 있습니다. 이를 통해 데이터베이스 쿼리를 더욱 유연하게 작성할 수 있습니다.

참고 자료