Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
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
Tags
more
Archives
Today
Total
관리 메뉴

하루에 하나씩 공부하기

오프라인/온라인 판매 데이터 통합하기-LV4(재도전) 본문

SQL 코딩테스트/LV4

오프라인/온라인 판매 데이터 통합하기-LV4(재도전)

dltaexox 2025. 1. 23. 17:16

 

- 문제

ONLINE_SALE 테이블과 OFFLINE_SALE 테이블에서 2022년 3월의 오프라인/온라인 상품 판매 데이터의 판매 날짜, 상품ID, 유저ID, 판매량을 출력하는 SQL문을 작성해주세요. OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값은 NULL 로 표시해주세요. 결과는 판매일을 기준으로 오름차순 정렬해주시고 판매일이 같다면 상품 ID를 기준으로 오름차순, 상품ID까지 같다면 유저 ID를 기준으로 오름차순 정렬해주세요.

 

코딩테스트 연습 - 오프라인/온라인 판매 데이터 통합하기 | 프로그래머스 스쿨

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

- 키포인트

OFFLINE_SALE의 USER_ID 값은 NULL로 표시하라는데 왜 안될까? > NULL <컬럼명> 하면 NULL로 채워진 컬럼 생성

모르겠음 그냥 데이터 병합도 모르겠음 -> 문제를 잘못 이해, 온오프라인 매출 합산을 구하는 문제인줄 알았음

 

- 코드

(SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM ONLINE_SALE
WHERE YEAR(SALES_DATE)='2022' AND MONTH(SALES_DATE)='03')
UNION
(SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, NULL USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE
WHERE YEAR(SALES_DATE)='2022' AND MONTH(SALES_DATE)='03')
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID;

 

**NULL 컬럼명** 새롭게 배움

**MySQL에는 FULL OUTER JOIN이 존재하지 않음** -> LEFT JOIN UNION RIGHT JOIN 해야함

** UNION은 중복값 제거

    UNION ALL은 중복값 허용 **