본문 바로가기

Oracle/SQL

SQL 집합연산자 UNION 데이터 중복 X 합집합

  • 같은테이블이 아닌 다른테이블도 가능
  • union all, union 의 위아래의 쿼리문의 테이블이 서로 달라도 위아래로 연결가능

Union 이 Union all 과 다른점 2가지

  1. 첫번째 컬럼을 기준으로 데이터를 정렬
  2. 중복된 행을 제거한다.

*** 21c 에서는 union 에서 데이터 order by 정렬이 되지 않는다.

(데이터가 많아짐에 따라 쿼리 실행이 너무 느려져서... 정렬하고 싶으면 order by 절을 직접 입력)


예제 68 :

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

union 

welect to_number(null) as deptno, sum(sal)
from emp;

문제 324

select to_char(hiredate, 'RRRR')as 입사년도 , 
       round(avg(sal),4)as 평균월급,
       sum(sal)as 총월급, 
       max(sal)as 최대월급 , 
       min(sal)as 최소월급 
from emp 
group by to_char(hiredate, 'RRRR')

union

select to_char(null) as 입사년도,
       round(avg(sal),4)as 평균월급, 
       sum(sal)as 총월급, 
       max(sal)as 최대월급 ,  
       min(sal)as 최소월급 
from emp;