CREATE 문
CREATE TABLE ONLINE_SALE (
ONLINE_SALE_ID NUMBER NOT NULL,
USER_ID NUMBER NOT NULL,
PRODUCT_ID NUMBER NOT NULL,
SALES_AMOUNT NUMBER NOT NULL,
SALES_DATE DATE NOT NULL
);
CREATE TABLE OFFLINE_SALE (
OFFLINE_SALE_ID NUMBER NOT NULL,
PRODUCT_ID NUMBER NOT NULL,
SALES_AMOUNT NUMBER NOT NULL,
SALES_DATE DATE NOT NULL
);
- 내 풀이
SELECT
SALES_DATE ,
PRODUCT_ID,
USER_ID,
SALES_AMOUNT
FROM(
SELECT
TO_CHAR(SALES_DATE , 'YYYY-MM-DD') AS SALES_DATE,
PRODUCT_ID ,
USER_ID,
SALES_AMOUNT
FROM ONLINE_SALE
WHERE TO_CHAR(SALES_DATE , 'YYYY-MM') LIKE '2022-03%'
UNION ALL
SELECT
TO_CHAR(SALES_DATE , 'YYYY-MM-DD') AS SALES_DATE,
PRODUCT_ID ,
NULL AS USER_ID,
SALES_AMOUNT
FROM OFFLINE_SALE
WHERE TO_CHAR(SALES_DATE , 'YYYY-MM') LIKE '2022-03%'
)
ORDER BY SALES_DATE , PRODUCT_ID , USER_ID;
LEFT JOIN을 사용하려고 보니 OFFLINE_SALE의 테이블에서 USER_ID가 NULL로 나와야한다고
UNION ALL로 변경하였다.
DBeaver에서는
WHERE TO_CHAR(SALES_DATE , 'YYYY-MM') LIKE '2022-03%' 부분이 FROM 바깥에서 돌려도 문제가 없었는데
프로그래머스 코딩 솔루션에서는 UNION 각각에 넣어야 실행이 되었다.
'프로그래머스 > [프로그래머스 - ORACLE] Lv.1' 카테고리의 다른 글
[프로그래머스 - ORACLE] 어린 동물 찾기 (0) | 2023.03.20 |
---|---|
[프로그래머스 - ORACLE] 아픈 동물 찾기 (0) | 2023.03.20 |
[프로그래머스 - ORACLE] 모든 레코드 조회하기 (0) | 2023.03.20 |
[프로그래머스 - ORACLE] 인기있는 아이스크림 (0) | 2023.03.20 |
[프로그래머스 - ORACLE] 과일로 만든 아이스크림 고르기 (0) | 2023.03.20 |
댓글