[Oracle]집합쿼리

InHwa Hong·2021년 11월 5일
0

SQL

목록 보기
2/10
  • 하나의 SELECT 문장이 반환한 결과를 한 집합으로 보고, 한 개 이상의 SELECT 문장이 집합 연산자로 연결된 형태
  • 여러 개의 SELECT 문이 연결되어 최종적으로는 하나의 결과 집합이 만들어짐
  • UNION, UNION ALL, INTERSECT, MINUS 4개 연산자 존재
  • 기본 형태
SELECT ...
FROM ...
WHERE ...
집합연산자--(UNION, UNION ALL, INTERSECT, MINUS)
SELECT ...
FROM...
WHERE ...
ORDER BY -- 생략 가능
  • 제한 사항
    -SELECT 절의 컬럼 수, 데이터 타입은 동일★
    -최종 반환되는 컬럼명은 맨 첫 SELECT 절의 컬럼
    -ORDER BY절은 맨 마지막 SELECT 문장에서만 붙일 수 있음

1. UNION(합집합)

  • 두 문장의 SELECT 절에 명시하는 컬럼 수, 데이터 타입은 동일해야 함
  • 조회된 결과의 컬럼명은 첫 번째 SELECT 문장의 컬럼명으로 보임
  • ORDER BY 절은 맨 마지막에 붙일 수 있음 (생략 가능)
  • 각 결과 집합에서 조회된 중복 값은 1번만 조회됨

2. UNION ALL

  • UNION과 동일하나 중복값도 모두 조회
  • 나머지 내용은 UNION과 동일

3. INTERSECT

  • 두 집합의 공통 원소를 가져오는 교집합 개념

4. MINUS

  • 선두 집합에만 있는 원소를 가져오는 차집합 개념

Examples

  1. Union




집합 연산자는 언제 사용할까?

  • UNION(ALL)
    1. 구조가 다른 여러 테이블에서 동일한 형태의 데이터를 추출하는 경우
    -테이블 옆으로 합친 후 집계
    2. 컬럼을 로우 형태로 전환해 조회할 경우
    -테이블 쪼갠 후 테이블 아래로 합체

1. 구조가 다른 여러 테이블에서 동일한 형태의 데이터를 추출하는 경우

-테이블 옆으로 합친 후 집계

ex. 계획 대비 실적은?(예산 테이블 + 매출 테이블)

-> 파란색 부분은 SUB QUERY로 뒤에서 배움
-> 주의 : 나눗셈 시 항상 분모에 0이 들어갈것을 고려해서 분모에 대한 0처리를 해주어야 함


2. 컬럼을 로우로

-테이블 쪼갠 후 테이블 아래로 합체

0개의 댓글