※ JOIN은 여러 테이블의 컬럼들을 결합하는 것, 출력할 컬럼의 갯수를 늘릴 수 있음
UNION 합집합과 관련, 여러 테이블의 행들을 결합하는 것, 출력할 행의 갯수를 늘릴 수 있음
※ 합집합 : UNION, UNION ALL
교집합 : INTERSECT ex) A INTERSECT B
차집합 : MINUS
※ 과거 경력 신입사원은 이거 없을 수도 있다. 직무/부서 변경 시 자료 쌓임
--1 사원의 사번, 이전직무번호를 출력하시오(JOB_HISTROY)
--2 사원의 사번, 직무번호를 출력하시오(EMPLOYEES)
--1번
SELECT employee_id, job_id
FROM job_history
--2번
SELECT employee_id, job_id
FROM employees
--1+2번, SELECT 2개 합치기
SELECT employee_id, job_id
FROM job_history
UNION
SELECT employee_id, job_id
FROM employees;
※ 합집합에서 중복된 자료는 무시
176번 사원 중복된 QR_REP 제외됨.
※ 집합연산 쓰는 경우
테이블 구조가 같은 데이터들 한곳에 모아서 연산할 때
ex) 프랜차이즈 관리할 때, 스벅 가락시장역점, 문정점 ... 점별로 테이블만듬
전체매출 현황 등을 파악하고 있어야함. 송파구 데이터 필요할때 통계낼 때 UNION
SELECT employee_id, job_id
FROM job_history
UNION ALL
SELECT employee_id, job_id
FROM employees
ORDER BY employee_id;
--각각 ORDER BY 못하고 정렬은 마지막 SELECT 구분에만 작성 가능
UNION ALL은 중복허용
176번 사원 중복된 것도 나옴
--이전직무와 다른 직무를 갖는 사원들의 사번, 현재직무를 출력하시오
SELECT employee_id, job_id
FROM employees
MINUS
SELECT employee_id, job_id
FROM job_history;
FROM job_history;
--176번 사원 안보임
--이전직무와 같은 직무를 갖는 사원들의 사번, 현재직무를 출력하시오
SELECT employee_id, job_id
FROM employees
INTERSECT
SELECT employee_id, job_id
FROM job_history;
'데이터베이스 > Oracle' 카테고리의 다른 글
서브쿼리(SubQuery) (2) (0) | 2023.08.22 |
---|---|
서브쿼리(SubQuery) (1) (0) | 2023.08.22 |
JOIN 예제 (0) | 2023.08.22 |
JOIN (0) | 2023.08.21 |
내장함수(다중행 함수, 그룹화, 정렬하기) (1) | 2023.08.21 |