달마루
기획자에서 개발자로
달마루
전체 방문자
오늘
어제
  • 분류 전체보기 (334)
    • 기획 이야기 (3)
    • 개발자로 전향한 이유 (1)
    • Github Address (1)
    • 개발자, 그 여정 (11)
      • 기초특강 (4)
      • 국비학원 선정 (4)
      • BitCamp_수업내용 (1)
      • 학원 프로젝트 후기 (1)
      • 정보처리기사 (1)
      • 개발 이야기 (0)
    • 개념 창고 (126)
      • JAVA (50)
      • CS (1)
      • Database (27)
      • NetWork (2)
      • 자료 구조 (2)
      • React (8)
      • Spring (3)
      • JPA (1)
      • HTML & CSS (18)
      • JS (3)
    • algorithm (186)
      • 백준 (161)
      • 프로그래머스 (23)
    • 사는 이야기 (0)

블로그 메뉴

  • Github
  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • BOJ algorithm
  • 백준알고리즘
  • select
  • Bronze III
  • Algorithm
  • Scanner
  • HTML
  • java algorithm
  • 백준문제풀이
  • SQL고득점Kit
  • BRONZE
  • math
  • 자바
  • BOJ
  • react
  • 백준
  • Bronze V
  • sql 문제풀이
  • SQL
  • programmers
  • 혼공SQL
  • 혼공MySQL
  • 프로그래머스
  • Bronze IV
  • 문제풀이
  • java
  • 알고리즘풀이
  • MySQL
  • 알고리즘
  • 혼자공부하는SQL

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
달마루

기획자에서 개발자로

[프로그래머스] 오프라인/온라인 판매 데이터 통합하기 - 131537 [MYSQL]
algorithm/프로그래머스

[프로그래머스] 오프라인/온라인 판매 데이터 통합하기 - 131537 [MYSQL]

2023. 1. 31. 19:55

[level 4] 오프라인/온라인 판매 데이터 통합하기 - 131537

문제 링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

성능 요약

메모리: 0.0 MB, 시간: 0.00 ms

구분

코딩테스트 연습 > SELECT

채점결과

Empty

문제 설명

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

Column nameTypeNullable

ONLINE_SALE_ID INTEGER FALSE
USER_ID INTEGER FALSE
PRODUCT_ID INTEGER FALSE
SALES_AMOUNT INTEGER FALSE
SALES_DATE DATE FALSE

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

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

Column nameTypeNullable

OFFLINE_SALE_ID INTEGER FALSE
PRODUCT_ID INTEGER FALSE
SALES_AMOUNT INTEGER FALSE
SALES_DATE DATE FALSE

동일한 날짜, 상품 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

1 1 3 2 2022-02-25
2 4 4 1 2022-03-01
4 2 2 2 2022-03-02
3 6 3 3 2022-03-02
5 5 5 1 2022-03-03
6 5 7 1 2022-04-06

OFFLINE_SALE 테이블이 다음과 같다면

OFFLINE_SALE_IDPRODUCT_IDSALES_AMOUNTSALES_DATE

1 1 2 2022-02-21
4 1 2 2022-03-01
3 3 3 2022-03-01
2 4 1 2022-03-01
5 2 1 2022-03-03
6 2 1 2022-04-01

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

SALES_DATEPRODUCT_IDUSER_IDSALES_AMOUNT

2022-03-01 1 NULL 2
2022-03-01 3 NULL 3
2022-03-01 4 NULL 1
2022-03-01 4 4 1
2022-03-02 2 2 2
2022-03-02 3 6 3
2022-03-03 2 NULL 1
2022-03-03 5 5 1



답 : UNION ALL로 쿼리문도 연결하고, 중복 값도 그대로 출력해준다.

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 ALL

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;
저작자표시 비영리 변경금지 (새창열림)

'algorithm > 프로그래머스' 카테고리의 다른 글

[프로그래머스] 조건에 부합하는 중고거래 댓글 조회하기 - 164673 [ORACLE]  (0) 2023.03.24
[프로그래머스] 재구매가 일어난 상품과 회원 리스트 구하기 - 131536 [MYSQL]  (0) 2023.01.31
[프로그래머스] 상위 n개 레코드 - 59405 [MYSQL]  (0) 2023.01.25
[프로그래머스] 조건에 맞는 회원수 구하기 - 131535 [MYSQL]  (0) 2023.01.25
[프로그래머스] 동물의 아이디와 이름 - 59403 [MYSQL]  (0) 2023.01.25
    'algorithm/프로그래머스' 카테고리의 다른 글
    • [프로그래머스] 조건에 부합하는 중고거래 댓글 조회하기 - 164673 [ORACLE]
    • [프로그래머스] 재구매가 일어난 상품과 회원 리스트 구하기 - 131536 [MYSQL]
    • [프로그래머스] 상위 n개 레코드 - 59405 [MYSQL]
    • [프로그래머스] 조건에 맞는 회원수 구하기 - 131535 [MYSQL]
    달마루
    달마루
    항상 어제보다 좋은 코드를 지향합니다. https://github.com/LimDongHyun99

    티스토리툴바