๐ข ๋ณธ ํฌ์คํ ์ ํ์ฉ๋๋ ๊ธฐ๋ณธ ๋ฌธ์ ๋ฐ ์๋ฃ ์ถ์ฒ๋
ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ
์คํธ ์ฐ์ต,
https://school.programmers.co.kr/learn/challenges?page=1&languages=mysql%2Coracle์์ ๋ฐํ๋๋ค.
โ ๋ฌธ์
๋ฌธ์ ์ค๋ช
๋ค์์ ์ํ๊ณต์ฅ์ ์ฃผ๋ฌธ์ ๋ณด๋ฅผ ๋ด์ FOOD_ORDER ํ ์ด๋ธ์ ๋๋ค. FOOD_ORDER ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ ORDER_ ID, PRODUCT_ID, AMOUNT, PRODUCE_DATE, IN_DATE,OUT_DATE,FACTORY_ID, WAREHOUSE_ID๋ ๊ฐ๊ฐ ์ฃผ๋ฌธ ID, ์ ํ ID, ์ฃผ๋ฌธ์, ์์ฐ์ผ์, ์ ๊ณ ์ผ์, ์ถ๊ณ ์ผ์, ๊ณต์ฅ ID, ์ฐฝ๊ณ ID๋ฅผ ์๋ฏธํฉ๋๋ค.
Column name | Type | Nullable |
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_ORDER ํ ์ด๋ธ์์ 5์ 1์ผ์ ๊ธฐ์ค์ผ๋ก ์ฃผ๋ฌธ ID, ์ ํ ID, ์ถ๊ณ ์ผ์, ์ถ๊ณ ์ฌ๋ถ๋ฅผ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ์ถ๊ณ ์ฌ๋ถ๋ 5์ 1์ผ๊น์ง ์ถ๊ณ ์๋ฃ๋ก ์ด ํ ๋ ์ง๋ ์ถ๊ณ ๋๊ธฐ๋ก ๋ฏธ์ ์ด๋ฉด ์ถ๊ณ ๋ฏธ์ ์ผ๋ก ์ถ๋ ฅํด์ฃผ์๊ณ , ๊ฒฐ๊ณผ๋ ์ฃผ๋ฌธ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
โ ํ์ด
๋ฌธ์ ์๊ตฌ์ฌํญ
FOOD_ORDER ํ ์ด๋ธ์์ 5์ 1์ผ์ ๊ธฐ์ค์ผ๋ก ์ฃผ๋ฌธ ID, ์ ํ ID, ์ถ๊ณ ์ผ์, ์ถ๊ณ ์ฌ๋ถ๋ฅผ ์กฐํ > ๋ ์ง ์กฐ๊ฑด1
์ถ๊ณ ์ฌ๋ถ๋ 5์ 1์ผ๊น์ง ์ถ๊ณ ์๋ฃ๋ก ์ด ํ ๋ ์ง๋ ์ถ๊ณ ๋๊ธฐ๋ก ๋ฏธ์ ์ด๋ฉด ์ถ๊ณ ๋ฏธ์ ์ผ๋ก ์ถ๋ ฅ *
> ๊ธฐ์กด ์ถ๊ณ ์ผ์(OUT_DATE) ์ปฌ๋ผ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก '์ถ๊ณ ์ฌ๋ถ' ์ปฌ๋ผ ์์ฑ์ด ํ์ํจ.
๊ฒฐ๊ณผ๋ ์ฃผ๋ฌธ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ > ์ ๋ ฌ์กฐ๊ฑด1
* CASE๋ฌธ ํ์ฉํด์ '์ถ๊ณ ์ฌ๋ถ' ์ปฌ๋ผ ์์ฑํ๊ธฐ
5์ 1์ผ๊น์ง ์ถ๊ณ ์๋ฃ¹๋ก ์ด ํ ๋ ์ง๋ ์ถ๊ณ ๋๊ธฐ²๋ก ๋ฏธ์ ์ด๋ฉด ์ถ๊ณ ๋ฏธ์ ³
3๋ฒ ์กฐ๊ฑด๊น์ง '๊ธฐ๊ฐ'์ด 3๊ตฌ๊ฐ์ด ์๋ 3๋ฒ ์กฐ๊ฑด์ ๋ถํฉ ์ฌ๋ถ๊ฐ ๊ฒฐ์ธก์น์ด๋ฏ๋ก ์ด ๋ฌธ์ ์์ CASE WHEN ์กฐ๊ฑด์ ํน๋ณํ ๋จผ์ ์คํ์์ผ์ผ ํ ์กฐ๊ฑด์ด ์์ด 1,2,3 ์์๋๋ก ์์ฑํ์๋ค.
SELECT ORDER_ID, PRODUCT_ID, DATE_FORMAT(OUT_DATE, '%Y-%m-%d') AS OUT_DATE,
CASE WHEN DATE_FORMAT(OUT_DATE, '%Y-%m-%d') <= '2022-05-01' THEN '์ถ๊ณ ์๋ฃ'
WHEN DATE_FORMAT(OUT_DATE, '%Y-%m-%d') > '2022-05-01' THEN '์ถ๊ณ ๋๊ธฐ'
ELSE '์ถ๊ณ ๋ฏธ์ ' END AS ์ถ๊ณ ์ฌ๋ถ
FROM FOOD_ORDER
ORDER BY 1