문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/131537
POINT.
- 날짜 함수
- UNION
코드.
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
SELECT
DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE,
PRODUCT_ID,
NULL AS USER_ID,
SALES_AMOUNT
FROM OFFLINE_SALE
WHERE SALES_DATE LIKE ('2022-03%')
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID;
내부 동작 순서
1. ONLINE_SALE 테이블에서의 처리
FROM 절: ONLINE_SALE 테이블에서 데이터를 가져옵니다.
WHERE 절: SALES_DATE가 '2022-03'으로 시작하는 행을 필터링합니다.
SELECT 절: DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE로 날짜 형식을 'YYYY-MM-DD'로 변환하고, PRODUCT_ID, USER_ID, SALES_AMOUNT를 선택합니다.
2. OFFLINE_SALE 테이블에서의 처리
FROM 절: OFFLINE_SALE 테이블에서 데이터를 가져옵니다.
WHERE 절: SALES_DATE가 '2022-03'으로 시작하는 행을 필터링합니다.
SELECT 절: DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE로 날짜 형식을 'YYYY-MM-DD'로 변환하고, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT를 선택합니다.
3. UNION 절
ONLINE_SALE의 결과와 OFFLINE_SALE의 결과를 합칩니다.
중복된 행은 제거됩니다.
4. ORDER BY 절
SALES_DATE를 기준으로 오름차순 정렬합니다.
그다음으로, 같은 판매일인 경우 PRODUCT_ID를 기준으로 오름차순 정렬합니다.
마지막으로, 같은 판매일과 같은 상품 ID인 경우 USER_ID를 기준으로 오름차순 정렬합니다.
SALES_DATE | PRODUCT_ID | USER_ID | SALES_AMOUNT |
2022-03-01 | 3 | 98 | 1 |
2022-03-01 | 27 | 70 | 1 |
2022-03-03 | 1 | 68 | 1 |
2022-03-03 | 24 | 170 | 1 |
2022-03-06 | 4 | 140 | 1 |
2022-03-06 | 6 | 68 | 1 |
2022-03-06 | 21 | 126 | 2 |
2022-03-07 | 29 | 103 | 2 |
초기 코드
SELECT *
FROM
(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
SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, 'NULL' AS USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE
WHERE SALES_DATE LIKE ('2022-03%')) AS A
ORDER BY A.SALES_DATE ASC, A.PRODUCT_ID ASC, A.USER_ID ASC
SALES_DATE | PRODUCT_ID | USER_ID | SALES_AMOUNT |
2022-03-01 | 3 | 98 | 1 |
2022-03-01 | 27 | 70 | 1 |
2022-03-03 | 1 | 68 | 1 |
2022-03-03 | 24 | 170 | 1 |
2022-03-06 | 4 | 140 | 1 |
2022-03-06 | 6 | 68 | 1 |
2022-03-06 | 21 | 126 | 2 |
2022-03-07 | 29 | 103 | 2 |
=>오류
오류 원인
1. UNION 사용의 이해 부족 --> 집합연산자 문법 이해 보강
'◖코딩 테스트◗▬▬▬▬▬▬▬▬▬ > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 깃허브 자동 커밋 연동(2024) (4) | 2024.01.23 |
---|---|
[SQL KIT] (2024) 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기(설명/코드/정답) (0) | 2024.01.22 |
[SQL KIT] (2024) 즐겨찾기가 가장 많은 식당 정보 출력하기(설명/코드/정답) (0) | 2024.01.21 |
[SQL KIT] (2024) 재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2024.01.17 |
[SQL KIT] (2024) 서울에 위치한 식당 목록 출력하기 (0) | 2024.01.17 |