๋ฌธ์ ์ค๋ช
๋ค์์ ์ด๋ ์๋ฅ ์ผํ๋ชฐ์ ์จ๋ผ์ธ ์ํ ํ๋งค ์ ๋ณด๋ฅผ ๋ด์ ONLINE_SALE
ํ
์ด๋ธ๊ณผ ์คํ๋ผ์ธ ์ํ ํ๋งค ์ ๋ณด๋ฅผ ๋ด์ OFFLINE_SALE
ํ
์ด๋ธ ์
๋๋ค. ONLINE_SALE
ํ
์ด๋ธ์ ์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋์ด์์ผ๋ฉฐ ONLINE_SALE_ID
, USER_ID
, PRODUCT_ID
, SALES_AMOUNT
, SALES_DATE
๋ ๊ฐ๊ฐ ์จ๋ผ์ธ ์ํ ํ๋งค ID, ํ์ ID, ์ํ ID, ํ๋งค๋, ํ๋งค์ผ์ ๋ํ๋
๋๋ค.
Column name | Type | Nullable |
---|---|---|
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 name | Type | Nullable |
---|---|---|
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_ID | USER_ID | PRODUCT_ID | SALES_AMOUNT | SALES_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_ID | PRODUCT_ID | SALES_AMOUNT | SALES_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_DATE | PRODUCT_ID | USER_ID | SALES_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 |
์ ๋ต
select sales_date, product_id, user_id, sales_amount
from
(select to_char(sales_date,'YYYY-MM-DD') sales_date, product_id, user_id, sales_amount
from online_sale
where to_char(sales_date,'YYYY-MM') = '2022-03'
union all
select to_char(sales_date,'YYYY-MM-DD') sales_date, product_id, NULL user_id, sales_amount
from offline_sale
where to_char(sales_date,'YYYY-MM') = '2022-03'
)
order by 1,2,3;
1. 2022-03 ์ ํด๋น๋๋ ๋ฐ์ดํฐ ์กฐํํ๋ ์ฟผ๋ฆฌ๋ฅผ ๊ฐ๊ฐ online_sale ๊ณผ offline_sale ํ ์ด๋ธ์์ ์กฐํํ๋ค.
2. union all๋ก ์ด ๋์ ํฉ์งํฉ์ ๋ง๋ ๋ค.
3. ํฉ์งํฉํ ๊ฒฐ๊ณผ์์ ์กฐํํ ์ปฌ๋ผ ๊ฐ์ select ๋ฌธ์ ๊ธฐ์ ํ๋ค.
4. order by๋ก ์กฐ๊ฑด์ ๋ง๋ ์์๋๋ก ๋ฒํธ๋ฅผ ๋งค๊ฒจ ์ฒ๋ฆฌํ๋ค.
์๋ฌธ์
๋ ์ง ์กฐํํ ๋ sales_date between to_date('2022-03','YYYY-MM') and to_date('2022-04','YYYY-MM') ๋ก ํ๋ฉด ์คํ์ ์กฐํ๋ ๋๋๋ฐ ์ ํ๋ ธ๋ค๊ณ ๋์ค๋์ง ๋ชจ๋ฅด๊ฒ ๋ค.
์ค๋ฌด ํ ๋ ์ฟผ๋ฆฌ ์ฑ๋ฅ ์ฌ๋ฆฐ๋ค๊ณ between์ผ๋ก ๋ง์ด ์ผ๋๊ฑฐ ๊ฐ์๋ฐ ์ด๊ฑฐ ๊ผญ ์ ํ๋ ธ๋์ง ์์์ผํ ๊ฑฐ ๊ฐ๋ค.