SQL 집합연산자

2020. 5. 11. 18:12·Programming/SQL
728x90

1. union all

2. union 

3. intersect 

4. minus


집합 연산자 - 조인은 서로 다른 테이블의 컬럼을 양 옆으로 출력하는 문법이라면 집합 연산자는 서로 다른 테이블의 클럼을 위아래로 출력하는 문법이다

 

합집합 연산자 : union, union all

교집합 연산자 : intersect 

차집합 연산자 : minus

 

1. union all

예제)직업, 직업별 토탈 월급과 맨 밑에 전체 토탈 월급을 출력하시오

select job, sum(sal)
from emp
group by job

union all

select '토탈월급', sum(sal)
from emp;

* 집합연산자 사용 시 주의사항

1. 집합 연산자 위 아래의 쿼리의 컬럼의 수가 동일해야 한다. 위의 쿼리 컬럼의 개수가 2개면 아래도 2개여야 한다.

2. 집합 연산자 위아래의 쿼리의 컬럼의 데이터 타입이 동일해야 한다.

3. 컬럼 별칭은 맨 위 쿼리에 있는 별칭만 화면에 표시된다. order by 절은 맨 아래의 쿼리에만 사용 가능

 

예제) 부서 번호, 부서 번호별 토탈월급을 출력하는데 아래와 같이 맨 아래에 전체 토탈월급도 출력하시오

select to_char(deptno) 부서번호, sum(sal) 토탈
from emp
group by deptno 

union all

select '전체 토탈 : ', sum(sal)
from emp
order by 토탈;

밑에 쿼리는 '전체 토탈 : '로 문자형이고 부서 번호는 숫자형이라 to_char 사용해서 부서 번호를 문자형을 바꾼다.

 

2. union - union all과 같이 합집합 연산자인데 union all과 다르게 중복된 데이터를 제거하고 정렬된 상태로 결과가 출력된다.

select job, sum(sal)
from emp
group by job

union

select '전체토탈 : ', sum(sal)
from emp;

union과 union all 비교

3. intersect 연산자 - 두 집합의 교집합을 출력하는 함수

emp01 테이블 : 1,2,3,4

emp02 테이블 : 3,4,5,6 있다고 가정하고

select empno
from emp01

intersect 

select empno 
from emp02;


4. minus 연산자 - 두 집합 간의 차이를 출력하는 집합 연산자

select empno
from emp01

minus

select empno
from emp02;

'Programming/SQL' 카테고리의 다른 글
  • SQL 서브쿼리문
  • SQL 조인 - 1999 ansi join
  • SQL 조인 - 오라클 조인
  • SQL 데이터 분석 함수
해치
해치
뭐라도 하자
  • 해치
    hi there
    해치
  • 글쓰기 관리자
  • 전체
    오늘
    어제
    • ALL (66)
      • Programming (62)
        • Python (14)
        • Linux (0)
        • SQL (13)
        • 알고리즘 (35)
      • Framework (3)
        • Docker (2)
        • Django (1)
      • AWS (0)
      • Dashboard (1)
  • 블로그 메뉴

    • 링크

    • 인기 글

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    해치
    SQL 집합연산자
    상단으로

    티스토리툴바