[ํ๋ก๊ทธ๋๋จธ์ค level 4] 5์ ์ํ๋ค์ ์ด๋งค์ถ ์กฐํํ๊ธฐ
๋ฌธ์ ์ค๋ช
๋ค์์ ์ํ์ ์ ๋ณด๋ฅผ ๋ด์ FOOD_PRODUCT ํ ์ด๋ธ๊ณผ ์ํ์ ์ฃผ๋ฌธ ์ ๋ณด๋ฅผ ๋ด์ FOOD_ORDER ํ ์ด๋ธ์ ๋๋ค. FOOD_PRODUCT ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE๋ ์ํ ID, ์ํ ์ด๋ฆ, ์ํ์ฝ๋, ์ํ๋ถ๋ฅ, ์ํ ๊ฐ๊ฒฉ์ ์๋ฏธํฉ๋๋ค.
Column nameTypeNullable
PRODUCT_ID | VARCHAR(10) | FALSE |
PRODUCT_NAME | VARCHAR(50) | FALSE |
PRODUCT_CD | VARCHAR(10) | TRUE |
CATEGORY | VARCHAR(10) | TRUE |
PRICE | NUMBER | TRUE |
FOOD_ORDER ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ ORDER_ID, PRODUCT_ID, AMOUNT, PRODUCE_DATE, IN_DATE, OUT_DATE, FACTORY_ID, WAREHOUSE_ID๋ ๊ฐ๊ฐ ์ฃผ๋ฌธ ID, ์ ํ ID, ์ฃผ๋ฌธ๋, ์์ฐ์ผ์, ์ ๊ณ ์ผ์, ์ถ๊ณ ์ผ์, ๊ณต์ฅ ID, ์ฐฝ๊ณ ID๋ฅผ ์๋ฏธํฉ๋๋ค.
Column nameTypeNullable
ORDER_ID | VARCHAR(10) | FALSE |
PRODUCT_ID | VARCHAR(5) | FALSE |
AMOUNT | NUMBER | FALSE |
PRODUCE_DATE | DATE | TRUE |
IN_DATE | DATE | TRUE |
OUT_DATE | DATE | TRUE |
FACTORY_ID | VARCHAR(10) | FALSE |
WAREHOUSE_ID | VARCHAR(10) | FALSE |
๋ฌธ์
FOOD_PRODUCT์ FOOD_ORDER ํ ์ด๋ธ์์ ์์ฐ์ผ์๊ฐ 2022๋ 5์์ธ ์ํ๋ค์ ์ํ ID, ์ํ ์ด๋ฆ, ์ด๋งค์ถ์ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ด๋ ๊ฒฐ๊ณผ๋ ์ด๋งค์ถ์ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์๊ณ ์ด๋งค์ถ์ด ๊ฐ๋ค๋ฉด ์ํ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
๋ฌธ์ ํ์ด
SELECT P.PRODUCT_ID, P.PRODUCT_NAME, SUM(O.AMOUNT)*P.PRICE AS TOTAL_AMOUNT FROM FOOD_PRODUCT AS P
JOIN FOOD_ORDER AS O ON P.PRODUCT_ID=O.PRODUCT_ID
WHERE O.PRODUCE_DATE LIKE '2022-05-%'
GROUP BY P.PRODUCT_ID
ORDER BY TOTAL_AMOUNT DESC, P.PRODUCT_ID;
FOOD_PRODUCT ํ ์ด๋ธ๊ณผ FOOD_ORDER ํ ์ด๋ธ์ ๊ฐ ํ ์ด๋ธ์ PRODUCT_ID๋ฅผ ๊ธฐ์ค์ผ๋ก JOINํ๋ค.
JOINํ ํ ์ด๋ธ์์ FOOD_ORDER ํ ์ด๋ธ์ PRODUCT_DATE ๋ฐ์ดํฐ๊ฐ '2022-05'๋ก ์์ํ๋ ์์ฐ์ผ์๊ฐ 2022๋ 5์์ธ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ค.
๊ทธ๋ฆฌ๊ณ PRODUCT_ID๋ณ๋ก ๊ทธ๋ฃนํํ ๋ค์ ๊ฐ ๊ทธ๋ฃน๋ค์ AMOUNT ์ฆ, ์ฃผ๋ฌธ๋์ ๋ชจ๋ ๋ํ๊ณ , ํด๋น PRODUCT_ID์ PRICE๋ฅผ ๊ณฑํด์ ์ด ๋งค์ถ์ ๊ณ์ฐํ๊ณ , TOTAL_AMOUNT๋ผ๋ ๋ณ์นญ์ ๋ถ์ธ๋ค.
๊ทธ๋ฆฌ๊ณ ์ํ ID, ์ํ ์ด๋ฆ, ์ด ๋งค์ถ์ ์ถ์ถํ๊ณ , ์ด ๋งค์ถ๊ณผ ์ํ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ณ ์ถ๋ ฅํ๋ค.