728x90
https://school.programmers.co.kr/learn/courses/30/lessons/131537
문제 예시
ONLINE_SALE
OFFLINE_SALE
원하는 출력값
- 2022년 3월의 오프라인/온라인 상품 판매 데이터의 판매 날짜, 상품ID, 유저ID, 판매량을 출력
- OFFLINE_SALE의 판매 데이터 USER_ID는 NULL로 표시
- 판매일, 상품ID, 유저ID 를 오름차순
📌 풀이 )
UNION ALL을 사용하여서 풀었다!
UNION ALL은 함수는 구조가 같은 두 테이블, 또는 두 조회 결과를 합하여 합집합처럼 만들어 결과를 출력해준다.
즉 여기서는 ONLINE_SALE_ID와 OFFLINE_SALE_ID가 데이터 구조는 같지만 이름이 다르다.
OFFLINE_SALE 테이블도 SELECT *하면 너무 좋겠지만, USER_ID가 없기 때문에 NULL값을 저장하도록 하여 ONLINE_SALE 테이블과 같게 해준다.
그 후에는 조건에 맞게 출력!
GROUP BY SALES_DATE, PRODUCT_ID, USER_ID도 추가해주었다가, 문제 내에서
동일한 날짜, 회원 ID, 상품 ID 조합에 대해서는 하나의 판매 데이터만 존재합니다.
라고 하여서 그냥 빼주었다.
SELECT
DATE_FORMAT(T.SALES_DATE, '%Y-%m-%d') AS SALES_DATE,
T.PRODUCT_ID,
T.USER_ID,
T.SALES_AMOUNT
FROM
(
SELECT *
FROM ONLINE_SALE
UNION ALL
SELECT
OFFLINE_SALE_ID AS ONLINE_SALE_ID,
NULL AS USER_ID,
PRODUCT_ID,
SALES_AMOUNT,
SALES_DATE
FROM OFFLINE_SALE
) AS T
WHERE SALES_DATE LIKE '2022-03%'
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID;
728x90
'코테 공부 🔥' 카테고리의 다른 글
[프로그래머스/SQL] 입양 시각 구하기(2) (0) | 2023.04.20 |
---|---|
[프로그래머스/SQL] 식품분류별 가장 비싼 식품의 정보 조회하기 (0) | 2023.04.20 |
[프로그래머스/SQL] 가격이 제일 비싼 식품의 정보 출력하기 (0) | 2023.04.20 |
[프로그래머스/SQL] 주문량이 많은 아이스크림들 조회하기 (2) | 2023.04.20 |
[백준/파이썬] 15486: 퇴사 2 (0) | 2023.04.19 |
댓글