Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 오브젝트
- 항해99장점
- 클래스
- 객체
- process
- 스레드
- 항해99단점
- IoC
- 쓰레드
- object
- Dependency Injection
- 항해99솔직후기
- API
- social login
- 객체지향 프로그래밍
- DI
- jvm
- Thread
- 인스턴스화
- 소셜
- 인스턴스
- 부트캠프추천
- bean
- 회고록
- inversion of control
- 소셜로그인
- class
- 프로세스
- jwt
- Instance
Archives
- Today
- Total
로운's 기술노트
[프로그래머스] 오프라인/온라인 판매 데이터 통합하기 (UNION) 본문
2개의 테이블을 묶는 방법을 join만 알고 있었는데, 찾아보니 union이라는 것도 가능하네?
오히려 이 경우에는 union all을 사용하는 것이 더 적합한 듯
ㅇ UNION이란?
- UNION : 여러 SELECT문과 결합하여 중복을 제거한 단일 결과 집합을 생성.
- UNION ALL : 여러 SELECT 문의 결과를 단순히 결합하여 중복을 제거하지 않은 단일 결과 집합을 생성.
ㅇ JOIN과의 차이
결합 방식과 처리 순서에 결정적인 차이가 있다.
JOIN은 수평 결합이며, 먼저 테이블을 결합하고 그 결과를 반환하지만,
UNION은 수직 결합이며, 각 SELECT 문을 먼저 실행하여 각각의 결과를 결합한 후에 최종 결과를 반환.
ㅇ 사용 전, 알아두기!
구분 | UNION | UNION ALL |
중복 행 처리 | 중복된 행을 제거하여 단일 결과 집합을 생성하므로 데이터 중복을 방지할 수 있음 | 중복을 제거하지 않고 모든 결과를 포함하므로 중복된 데이터가 결과에 반복해서 나타날 수 있음 |
성능 | 중복을 제거하기 위해 결과 집합을 정렬하고 비교하는 작업이 추가되므로 처리 시간이 더 오래 걸릴 수 있음 | 중복된 행이 많을 경우 결과 집합의 크기가 더 커질 수 있으며, 이 경우 성능에 영향을 줄 수 있음 |
열 순서 및 데이터 유형 | 각 SELECT 문의 결과는 동일한 열 순서와 데이터 유형을 가져야 한다 서로 다른 열 순서나 데이터 유형을 가진 SELECT 문을 결합하면 오류 발생 |
<풀이>
select date_format(SALES_DATE,'%Y-%m-%d') as SALES_DATE
, PRODUCT_ID
, USER_ID
, SALES_AMOUNT
from ONLINE_SALE
where SALES_DATE like '2022-03%'
union all
select date_format(SALES_DATE,'%Y-%m-%d') as SALES_DATE
, PRODUCT_ID
, Null
, SALES_AMOUNT
from OFFLINE_SALE
where SALES_DATE like '2022-03%'
order by SALES_DATE, PRODUCT_ID, USER_ID
'내배캠_데이터분석가_'24.04~08 > SQL' 카테고리의 다른 글
[문법] DATE_FORMAT() 함수 (0) | 2024.04.24 |
---|---|
[프로그래머스] 조건에 부합하는 중고거래 댓글 조회하기 (0) | 2024.04.23 |
[프로그래머스] 그룹별 조건에 맞는 식당 목록 출력하기 (0) | 2024.04.23 |
[프로그래머스] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (regexp) (2) | 2024.04.22 |
[프로그래머스] 저자 별 카테고리 별 매출액 집계하기 (0) | 2024.04.22 |
Comments