하루에 하나씩 공부하기
오프라인/온라인 판매 데이터 통합하기-LV4(재도전) 본문
- 문제
ONLINE_SALE 테이블과 OFFLINE_SALE 테이블에서 2022년 3월의 오프라인/온라인 상품 판매 데이터의 판매 날짜, 상품ID, 유저ID, 판매량을 출력하는 SQL문을 작성해주세요. OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값은 NULL 로 표시해주세요. 결과는 판매일을 기준으로 오름차순 정렬해주시고 판매일이 같다면 상품 ID를 기준으로 오름차순, 상품ID까지 같다면 유저 ID를 기준으로 오름차순 정렬해주세요.
코딩테스트 연습 - 오프라인/온라인 판매 데이터 통합하기 | 프로그래머스 스쿨
- 키포인트
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은 중복값 허용 **
'SQL 코딩테스트 > LV4' 카테고리의 다른 글
그룹별 조건에 맞는 식당 목록 출력하기-LV4 (재도전) (0) | 2025.02.06 |
---|---|
년, 월, 성별 별 상품 구매 회원 수 구하기-LV4 (0) | 2025.01.23 |
취소되지 않은 진료 예약 조회하기-LV4 (1) | 2025.01.23 |
주문량이 많은 아이스크림들 조회하기-LV4 (0) | 2025.01.22 |
저자 별 카테고리 별 매출액 집계하기-LV4 (0) | 2025.01.22 |