본문 바로가기
수업(국비지원)/Oracle

[Oracle] 합집합 union

by byeolsub 2023. 4. 13.
  • 합집합

     - union : 두 집합을 더해서 결과 출력. 중복 값 제거하고 정렬됨. - union all : 두 집합을 더해서 결과를 출력. 중복 데이터                     조회 가능.


💡 주의사항

1. 칼럼의 개수가 다를 경우 오류 발생.

2. 비교되는 칼럼 끼리의 데이터 타입이 다를 경우 오류 발생.


예시 :  교수 중 상여금이 있는 경우는 급여합계(급여+상여금),
  상여금이 없는 경우는 급여합계(급여)로 조회하기.
  교수의 교수번호,이름,부서코드,급여,급여합계를 출력.
select profno,name,deptno,pay,pay+bonus 급여합계 from professor where bonus is not null
union
select  profno,name,deptno,pay,pay 급여합계 form professor where bonus is null

- union 사용 : 이 경우 정렬 되어서 결과가 도출된다. 
              만약 중복된 내용이 있다면 제거되어서 결과 도출

예시 : 
 교수 중 상여금이 있는 경우는 급여합계(급여+상여금),
상여금이 없는 경우는 급여합계(급여)로 조회하기.
교수의 교수번호,이름,부서코드,급여,급여합계를 출력.
select profno,name,deptno,pay,pay+bonus 급여합계 from professor where bonus is not null
union all
select  profno,name,deptno,pay,pay 급여합계 form professor where bonus is null

 - union all 사용 : 위에서 조회된 내용과 아래에서 조회된 내용을 합해서 나열해준다.
                   중복의 경우 자동 제거해주지 않음.

문제 : 
 1. 101학과 학생의 학번,이름,학과번호1와 101학과 교수의 교수번호,이름,학과번호를 출력하기.
select studno,name,deptno1 from student where deptno1 = 101
union 
select profno.name,deptno from professor where deptno = 101