(프로그래머스) LV.4 오프라인/온라인 판매 데이터 통합하기

chaechae·2023년 3월 9일
0

코딩테스트(SQL) 

목록 보기
11/22
post-thumbnail

LV.4 오프라인/온라인 판매 데이터 통합하기

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

# 2022년 3월의 오프라인/온라인 상품 판매 데이터의 판매 날짜, 상품ID, 유저ID, 판매량을 출력
# OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값은 NULL 로 표시
# 판매일 상품ID 유저ID ASC

SELECT DATE_FORMAT(sales_date,'%Y-%m-%d') as sales_date
     ,product_id
     ,user_id
     ,sales_amount
 FROM ONLINE_SALE
WHERE MONTH(sales_date) = 3 

union all

SELECT DATE_FORMAT(sales_date,'%Y-%m-%d') as sales_date
    , product_id
    , null AS user_id # OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값은 NULL 로 표시
    , sales_amount
FROM OFFLINE_SALE 
WHERE MONTH(sales_date) = 3 
ORDER BY SALES_DATE ASC, PRODUCT_ID ASC, USER_ID ASC

풀이과정

  • 두 테이블에서 WHERE MONTH(sales_date) = 3 조건을 달아 3월에 해당하는 데이터들만 뽑은뒤 union all 함수를 이용해 행을 붙이면 되지만 OFFINE_SALE 테이블에는 user_id 컬럼이 없었다. 컬럼의 개수가 다르기 때문에 합칠수 없고, OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값을 NULL 로 표시해야한다.
  • 따로 조건을 걸 필요 없이 null 값을 갖는 컬럼을 만들 수 있다는걸 배웠다! 그냥 SELECT 절에 null 이라 적으면 모든 값이 null 인 column이 만들어진다.
profile
게임 혹은 다양한 컨텐츠가 있는 곳을 좋아합니다. 시리즈를 참고하시면 편하게 글을 보실 수 있습니다🫠

0개의 댓글