728x90
문제
-- 코드를 입력하세요
-- ONLINE_SALE 테이블과 OFFLINE_SALE 테이블에서
-- 2022년 3월의 오프라인/온라인 상품 판매 데이터의
-- 판매 날짜, 상품ID, 유저ID, 판매량을 합쳐서 출력하는 SQL문
-- OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값은 NULL 로 표시
-- 결과는 판매일을 기준으로 오름차순 정렬
-- 판매일이 같다면 상품 ID를 기준으로 오름차순
-- 상품ID까지 같다면 유저 ID를 기준으로 오름차순 정렬
풀이방법
1. 온라인 테이블 조건 필터링
2. 오프라인 테이블 조건 필터링
* 이 때, 반드시 온라인이랑 같은 컬럼 수가 필요
3. 유니온
4. 정렬조건 걸어줌
나의 코드
-- 온라인
SELECT
DATE_FORMAT(SALES_DATE, "%Y-%m-%d") SALES_DATE
, PRODUCT_ID
, USER_ID
, SALES_AMOUNT
FROM ONLINE_SALE
WHERE SALES_DATE LIKE ('2022-03-%')
UNION -- 테이블 합체. 이때, 컬럼수 동일해야 가능
-- 오프라인
SELECT
DATE_FORMAT(SALES_DATE, "%Y-%m-%d") SALES_DATE
, PRODUCT_ID
, NULL -- user_id = null인 컬럼
, SALES_AMOUNT
FROM OFFLINE_SALE
WHERE SALES_DATE LIKE ('2022-03-%')
--정렬
ORDER BY SALES_DATE ASC, PRODUCT_ID ASC, USER_ID ASC
레퍼런스 코드
일반 Union 버전 참고링크 : 참고링크1
Union all 버전 참고링크 : 참고링크2
728x90
'알고리즘 저장소 (일반방식과 나만의 풀이) > SQL' 카테고리의 다른 글
[Programmers] no59039: 이름이 없는 동물의 아이디 (0) | 2023.03.14 |
---|---|
[Programmers] no59405: 상위 n개 레코드 (0) | 2023.03.14 |
[Programmers] no131114: 경기도에 위치한 식품창고 목록 출력하기 (0) | 2023.03.14 |
[Programmers] no131528: 나이 정보가 없는 회원 수 구하기 (1) | 2023.03.14 |
[Programmers] no131535: 조건에 맞는 회원수 구하기 (0) | 2023.03.14 |