SQL

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค level 4] 5์›” ์‹ํ’ˆ๋“ค์˜ ์ด๋งค์ถœ ์กฐํšŒํ•˜๊ธฐ

1eehyunji 2023. 7. 26. 22:32

๋ฌธ์ œ ์„ค๋ช…

๋‹ค์Œ์€ ์‹ํ’ˆ์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ 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๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ์ถœ๋ ฅํ•œ๋‹ค.