diff --git a/프로그래머스/4/131537. 오프라인/온라인 판매 데이터 통합하기/README.md b/프로그래머스/4/131537. 오프라인/온라인 판매 데이터 통합하기/README.md new file mode 100644 index 0000000..ed8cdb6 --- /dev/null +++ b/프로그래머스/4/131537. 오프라인/온라인 판매 데이터 통합하기/README.md @@ -0,0 +1,263 @@ +# [level 4] 오프라인/온라인 판매 데이터 통합하기 - 131537 + +[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/131537) + +### 성능 요약 + +메모리: 0.0 MB, 시간: 0.00 ms + +### 구분 + +코딩테스트 연습 > SELECT + +### 채점결과 + +Empty + +### 제출 일자 + +2025년 03월 06일 11:36:19 + +### 문제 설명 + +

다음은 어느 의류 쇼핑몰의 온라인 상품 판매 정보를 담은 ONLINE_SALE 테이블과 오프라인 상품 판매 정보를 담은 OFFLINE_SALE 테이블 입니다. ONLINE_SALE 테이블은 아래와 같은 구조로 되어있으며 ONLINE_SALE_ID, USER_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATE는 각각 온라인 상품 판매 ID, 회원 ID, 상품 ID, 판매량, 판매일을 나타냅니다.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Column nameTypeNullable
ONLINE_SALE_IDINTEGERFALSE
USER_IDINTEGERFALSE
PRODUCT_IDINTEGERFALSE
SALES_AMOUNTINTEGERFALSE
SALES_DATEDATEFALSE
+

동일한 날짜, 회원 ID, 상품 ID 조합에 대해서는 하나의 판매 데이터만 존재합니다.

+ +

OFFLINE_SALE 테이블은 아래와 같은 구조로 되어있으며 OFFLINE_SALE_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATE는 각각 오프라인 상품 판매 ID, 상품 ID, 판매량, 판매일을 나타냅니다.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Column nameTypeNullable
OFFLINE_SALE_IDINTEGERFALSE
PRODUCT_IDINTEGERFALSE
SALES_AMOUNTINTEGERFALSE
SALES_DATEDATEFALSE
+

동일한 날짜, 상품 ID 조합에 대해서는 하나의 판매 데이터만 존재합니다.

+ +
+ +
문제
+ +

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

+ +
+ +
예시
+ +

예를 들어 ONLINE_SALE 테이블이 다음과 같고

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ONLINE_SALE_IDUSER_IDPRODUCT_IDSALES_AMOUNTSALES_DATE
11322022-02-25
24412022-03-01
42222022-03-02
36332022-03-02
55512022-03-03
65712022-04-06
+

OFFLINE_SALE 테이블이 다음과 같다면

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OFFLINE_SALE_IDPRODUCT_IDSALES_AMOUNTSALES_DATE
1122022-02-21
4122022-03-01
3332022-03-01
2412022-03-01
5212022-03-03
6212022-04-01
+

각 테이블의 2022년 3월의 판매 데이터를 합쳐서, 정렬한 결과는 다음과 같아야 합니다.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SALES_DATEPRODUCT_IDUSER_IDSALES_AMOUNT
2022-03-011NULL2
2022-03-013NULL3
2022-03-014NULL1
2022-03-01441
2022-03-02222
2022-03-02363
2022-03-032NULL1
2022-03-03551
+ +> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges \ No newline at end of file diff --git a/프로그래머스/4/131537. 오프라인/온라인 판매 데이터 통합하기/오프라인/온라인 판매 데이터 통합하기.sql b/프로그래머스/4/131537. 오프라인/온라인 판매 데이터 통합하기/오프라인/온라인 판매 데이터 통합하기.sql new file mode 100644 index 0000000..b67f304 --- /dev/null +++ b/프로그래머스/4/131537. 오프라인/온라인 판매 데이터 통합하기/오프라인/온라인 판매 데이터 통합하기.sql @@ -0,0 +1,23 @@ +-- 코드를 입력하세요 +WITH MAR_ONLINE_SALE AS( + SELECT * + FROM ONLINE_SALE + WHERE MONTH(SALES_DATE) = 3 AND YEAR(SALES_DATE)=2022 +), MAR_OFFLINE_SALE AS( + SELECT * + FROM OFFLINE_SALE + WHERE MONTH(SALES_DATE) = 3 AND YEAR(SALES_DATE)=2022 +) + +SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, + PRODUCT_ID, + USER_ID, + SALES_AMOUNT +FROM MAR_ONLINE_SALE +UNION ALL +SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, + PRODUCT_ID, + NULL, + SALES_AMOUNT +FROM MAR_OFFLINE_SALE +ORDER BY SALES_DATE ASC, PRODUCT_ID ASC, USER_ID ASC; \ No newline at end of file