코딩 테스트(Coding Test)/프로그래머스

[프로그래머스] 조건별로 분류하여 주문상태 출력하기 - MySQL

잇트루 2023. 6. 5. 01:00
반응형

문제

 

문제 설명

다음은 식품공장의 주문정보를 담은 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 테이블이 다음과 같을 때

ORDER_ID PRODUCT_ID AMOUNT PRODUCE_DATE IN_DATE OUT_DATE FACTORY_ID WAREHOUSE_ID
OD00000051 P0002 4000 2022-04-01 2022-04-21 2022-04-21 FT19970003 WH0005
OD00000052 P0003 2500 2022-04-10 2022-04-27 2022-04-27 FT19970003 WH0006
OD00000053 P0005 6200 2022-04-15 2022-04-30 2022-05-01 FT19940003 WH0003
OD00000054 P0006 1000 2022-04-21 2022-04-30 NULL FT19940003 WH0009
OD00000055 P0008 1500 2022-04-25 2022-05-11 2022-05-11 FT19980003 WH0009

 

SQL을 실행하면 다음과 같이 출력되어야 합니다.

ORDER_ID PRODUCT_ID OUT_DATE 출고여부
OD00000051 P0002 2022-04-21 출고완료
OD00000052 P0003 2022-04-27 출고완료
OD00000053 P0005 2022-05-01 출고완료
OD00000054 P0006   출고미정
OD00000055 P0008 2022-05-11 출고대기

 

 

코드

SELECT ORDER_ID,
    PRODUCT_ID,
    DATE_FORMAT(OUT_DATE, '%Y-%m-%d') AS OUT_DATE,
    CASE
        WHEN OUT_DATE > '2022-05-01' THEN '출고대기'
        WHEN OUT_DATE <= '2022-05-01' THEN '출고완료'
        ELSE '출고미정'
    END AS 출고여부
FROM FOOD_ORDER
ORDER BY ORDER_ID ASC;

SELECT ~ FROM 절

FOOD_ORDER 테이블의 ORDER_ID, PRODUCT_ID, OUT_DATE, OUT_DATE를 활용한 출고여부를 조회한다.

OUT_DATE는 DATE_FORMAT 함수를 통해 %Y-%m-%d 형태로 변환하여 조회한다.

CASE 절을 사용하여 OUT_DATE가 2022년 5월 1일보다 크면 '출고대기', 작거나 같으면 '출고완료' 그 외엔 '출고미정'으로 지정하여 조회한다.

 

출고여부를 IF 함수를 통해 다음과 같이 조회할 수도 있다.

IF(OUT_DATE > '2022-05-01', '출고대기', IF(OUT_DATE <= '2022-05-01', '출고완료', '출고미정')) AS 출고여부

 

ORDER BY 절

ORDER_ID를 기준으로 오름차순 정렬한다.

반응형