
๋ค์์ ์ด๋ ์๋ฅ ์ผํ๋ชฐ์์ ํ๋งค์ค์ธ ์ํ๋ค์ ์ํ ์ ๋ณด๋ฅผ ๋ด์ PRODUCT ํ
์ด๋ธ๊ณผ ์คํ๋ผ์ธ ์ํ ํ๋งค ์ ๋ณด๋ฅผ ๋ด์ OFFLINE_SALE ํ
์ด๋ธ ์
๋๋ค. PRODUCT ํ
์ด๋ธ์ ์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ก PRODUCT_ID, PRODUCT_CODE, PRICE๋ ๊ฐ๊ฐ ์ํ ID, ์ํ์ฝ๋, ํ๋งค๊ฐ๋ฅผ ๋ํ๋
๋๋ค.
| Column name | Type | Nullable |
|---|---|---|
| PRODUCT_ID | INTEGER | FALSE |
| PRODUCT_CODE | VARCHAR(8) | FALSE |
| PRICE | INTEGER | FALSE |
์ํ ๋ณ๋ก ์ค๋ณต๋์ง ์๋ 8์๋ฆฌ ์ํ์ฝ๋ ๊ฐ์ ๊ฐ์ง๋ฉฐ, ์ 2์๋ฆฌ๋ ์นดํ ๊ณ ๋ฆฌ ์ฝ๋๋ฅผ ์๋ฏธํฉ๋๋ค.
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 ์กฐํฉ์ ๋ํด์๋ ํ๋์ ํ๋งค ๋ฐ์ดํฐ๋ง ์กด์ฌํฉ๋๋ค.
PRODUCT ํ
์ด๋ธ๊ณผ OFFLINE_SALE ํ
์ด๋ธ์์ ์ํ์ฝ๋ ๋ณ ๋งค์ถ์ก(ํ๋งค๊ฐ * ํ๋งค๋) ํฉ๊ณ๋ฅผ ์ถ๋ ฅํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ๊ฒฐ๊ณผ๋ ๋งค์ถ์ก์ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์๊ณ ๋งค์ถ์ก์ด ๊ฐ๋ค๋ฉด ์ํ์ฝ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
์๋ฅผ ๋ค์ด PRODUCT ํ
์ด๋ธ์ด ๋ค์๊ณผ ๊ฐ๊ณ
| PRODUCT_ID | PRODUCT_CODE | PRICE |
|---|---|---|
| 1 | A1000011 | 15000 |
| 2 | A1000045 | 8000 |
| 3 | C3000002 | 42000 |
OFFLINE_SALE ํ
์ด๋ธ์ด ๋ค์๊ณผ ๊ฐ๋ค๋ฉด
| OFFLINE_SALE_ID | PRODUCT_ID | SALES_AMOUNT | SALES_DATE |
|---|---|---|---|
| 1 | 1 | 2 | 2022-02-21 |
| 2 | 1 | 2 | 2022-03-02 |
| 3 | 3 | 3 | 2022-05-01 |
| 4 | 2 | 1 | 2022-05-24 |
| 5 | 1 | 2 | 2022-07-14 |
| 6 | 2 | 1 | 2022-09-22 |
๊ฐ ์ํ ๋ณ ์ด ํ๋งค๋๊ณผ ํ๋งค๊ฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
PRODUCT_CODE ๊ฐ A1000011์ธ ์ํ์ ์ด ํ๋งค๋์ด 6๊ฐ, ํ๋งค๊ฐ๊ฐ 15,000์PRODUCT_CODE ๊ฐ A1000045์ธ ์ํ์ ์ด ํ๋งค๋์ด 2๊ฐ, ํ๋งค๊ฐ๊ฐ 8,000์PRODUCT_CODE ๊ฐ C3000002์ธ ์ํ์ ์ด ํ๋งค๋์ด 3๊ฐ, ํ๋งค๊ฐ๊ฐ 42,000์๊ทธ๋ฌ๋ฏ๋ก ๊ฐ ์ํ ๋ณ ๋งค์ถ์ก์ ๊ณ์ฐํ๊ณ ์ ๋ ฌํ๋ฉด ๊ฒฐ๊ณผ๊ฐ ๋ค์๊ณผ ๊ฐ์ด ๋์์ผ ํฉ๋๋ค.
| PRODUCT_CODE | SALES |
|---|---|
| C3000002 | 126000 |
| A1000011 | 90000 |
| A1000045 | 16000 |
SELECT
pd.PRODUCT_CODE AS PRODUCT_CODE,
SUM(pd.PRICE*os.SALES_AMOUNT) AS SALES
FROM PRODUCT pd
JOIN OFFLINE_SALE os
ON pd.PRODUCT_ID = os.PRODUCT_ID
GROUP BY pd.PRODUCT_CODE
ORDER BY
SALES DESC,
pd.PRODUCT_CODE