- Set Operator 종류와 설명
Set Operator 종류
- UNION(합집합,중복x,자동오름차순정렬)
- UINON ALL(합집합,중복o,정렬x)
- INTERSECT(교집합)
- MINUS(차집합)
각각 Set Operator 를 이용한 예제코드
- UNION과 UNION ALL 을 이용하는 예제코드 이용
select *
from tbl_panmae;
위의 TBL_PANMAE 테이블을 조회하는 쿼리문 실행결과
-----------------------------------------------------------
PANMAEDATE JEPUMNAME PANMAESU
-----------------------------------------------------------
22/07/02 허니버터칩 30
22/07/03 고구마깡 15
22/07/04 고구마깡 10
22/07/05 허니버터칩 20
22/07/06 새우깡 10
22/07/06 새우깡 10
22/07/06 감자깡 5
22/07/06 허니버터칩 15
22/07/06 고구마깡 20
22/07/06 감자깡 10
22/07/06 새우깡 10
tbl_panmae 테이블에서 5월달 판매자료, 6월달 판매자료 테이블을 따로 만든뒤, 해당 데이터들을 tbl_panmae 테이블에서 지우기
create table tbl_panmae_202205
as
select *
from tbl_panmae
where to_char(panmaedate, 'yyyy-mm') = to_char(add_months(sysdate, -2), 'yyyy-mm');
--Table TBL_PANMAE_202205이(가) 생성되었습니다.
delete from tbl_panmae
where to_char(panmaedate, 'yyyy-mm') = to_char(add_months(sysdate, -2), 'yyyy-mm')
-- 5개 행 이(가) 삭제되었습니다.
commit;
-- 커밋 완료.
create table tbl_panmae_202206
as
select *
from tbl_panmae
where to_char(panmaedate, 'yyyy-mm') = to_char(add_months(sysdate, -1), 'yyyy-mm');
-- Table TBL_PANMAE_202206이(가) 생성되었습니다.
select *
from tbl_panmae_202206;
delete from tbl_panmae
where to_char(panmaedate, 'yyyy-mm') = to_char(add_months(sysdate, -1), 'yyyy-mm');
-- 4개 행 이(가) 삭제되었습니다.
commit;
-- 커밋 완료.
- 최근 3개월간 판매되어진 정보를 가지고 제품별 판매량의 합계를 추출하기(UNION 이용)
select *
from tbl_panmae -- 이번달 판매정보
UNION
select *
from tbl_panmae_202205 -- 2달전 판매정보
UNION
select *
from tbl_panmae_202206; -- 1달전 판매정보
- UNION 을 하면 항상 첫번째 컬럼(지금은 panmaedate)을 기준으로 오름차순 정렬되어 나온다.
그래서 2022년 5월 데이터 부터 먼저 나온다.
- UNION ALL을 이용하여 정렬 없이 그냥 순서대로 행을 붙여서 보여주기
select *
from tbl_panmae -- 이번달 판매정보
UNION ALL
select *
from tbl_panmae_202205 -- 2달전 판매정보
UNION ALL
select *
from tbl_panmae_202206; -- 1달전 판매정보
최근 3개월간 판매되어진 판매량의 총합계 구하기
--1. 틀린풀이
select sum(panmaesu)
from
(
select panmaesu
from tbl_panmae_202205
UNION
select panmaesu
from tbl_panmae_202206
UNION
select panmaesu
from tbl_panmae
) V;
-- 98
-- 2. 올바른풀이
select sum(panmaesu)
from
(
select panmaesu
from tbl_panmae_202205
UNION ALL
select panmaesu
from tbl_panmae_202206
UNION ALL
select panmaesu
from tbl_panmae
) V;
-- 243
총합계를 구할때 UNION은 자동적으로 중복이 제거되기때문에, 정확한 합계가 나오지 않는다.
따라서 총합계를 구할땐 모든 데이터를 다 보여주는 UNION ALL을 써야 한다.
회사 면접시 질문
질문 : JOIN 과 UNION 의 차이점에 대해서 말해 보세요
답변 : UNION 은 테이블(뷰)과 테이블(뷰)을 합쳐서 보여주는 것으로써,
이것은 행(ROW)과 행(ROW)을 합친 결과를 보여주는 것입니다.
'개발 > Oracle' 카테고리의 다른 글
[Oracle] 오라클 Transaction,SAVEPOINT (0) | 2022.07.21 |
---|---|
[Oracle]오라클 ROWID,ROWNUM,페이징처리하기 (0) | 2022.07.21 |
[Oracle] 오라클 Join 과제하기 (0) | 2022.07.20 |
[Oracle] 오라클 Join(조인) (0) | 2022.07.20 |
[Oracle] 오라클 상관서브쿼리를 사용한 UPDATE 처리하기 (0) | 2022.07.20 |
개발을 하며 만났던 문제들과 해결 과정, 공부한 내용 등을 기록합니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!