https://school.programmers.co.kr/learn/courses/30/lessons/131537
문제를 읽고 든 생각
위아래롤 테이블을 이어붙여야한다 -- > UNION
(SELECT *
FROM ONLINE_SALE
)
UNION
(SELECT *
FROM OFFLINE_SALE
)
SQL 실행 중 오류가 발생하였습니다.
The used SELECT statements have a different number of columns
column 개수가 달라서 냅다 UNION은 안됨!
일단 2022년 3월의 온라인 판매 내역을 주어진 순서에 맞게 출력하기 위한 SQL문은 다음과 같다.
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
MONTH() 함수를 이용해서 3월의 데이터만 가져올 수 있다.
DATE_FORMAT() 함수를 이용해서 원하는 결과 형태로 날짜를 출력할 수 있다.
online_sale에는 user_id가 없다.
이러한 경우 SELECT 절에서 NULL 값을 user_id로 불러와서 NULL 값으로 채워주면 된다.
SELECT DATE_FORMAT(sales_date, '%Y-%m-%d') AS sales_date,
product_id,
NULL AS user_id,
sales_amount
FROM offline_sale
WHERE MONTH(sales_date) = 3
위 2개 코드를 UNION 해준 후, 원하는 조건에 따라서 정렬 해주면 끝!
(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
(SELECT DATE_FORMAT(sales_date, '%Y-%m-%d') AS sales_date,
product_id,
NULL AS user_id,
sales_amount
FROM offline_sale
WHERE MONTH(sales_date) = 3)
ORDER BY sales_date, product_id, user_id
'SQL > 문제풀이' 카테고리의 다른 글
[프로그래머스] 가격대별 상품 개수 구하기 (0) | 2023.12.26 |
---|---|
[프로그래머스] 즐겨찾기가 가장 많은 식당 정보 출력하기 (0) | 2023.12.26 |
[프로그래머스] 상위 n개 레코드 (0) | 2023.12.22 |
[프로그래머스] 어린 동물 찾기 (0) | 2023.12.22 |
[프로그래머스] 재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2023.12.21 |