코딩테스트

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

코드 죄수 2023. 9. 4. 00:10

문제에서 원하는 것은 

 

1.  5월 1일을 기준으로 출고여부가 달라져야하며

2. 주문 ID를 기준으로 정렬을 해야한다.

 

테이블을 보고 하나씩 sql을 작성하면 

 

우선 1. 5월 1일을 기준으로 출고여부 sql은 

    CASE
        WHEN (OUT_DATE <= '2022-05-01') THEN '출고완료'
        WHEN (OUT_DATE > '2022-05-01') THEN '출고대기'
        ELSE '출고미정'
    END 출고여부

CASE문을 가지고 작성하였다.

 

"WHEN 조건 THEN 출력값" 으로 작성하면 됨으로 위 sql을 보면 5월 1일을 넘지 않으면 "출고완료", 넘으면 "출고대기", 출고 예정이 없으면 "출고미정"을 출력하도록 작성을 하였다. 

 

마지막으로 2. 주문_ID로 정렬을 하는 sql은 

ORDER BY ORDER_ID ASC;

이므로 sql을 다 합치면 

 

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

이런식이 되는데 

 

위 SELECT절을 보면 알겠지만 OUT_DATE의 날짜 형식을 바꿔 주었다.

 

그냥 OUT_DATE를 적어주면 프로그래머스에서 지정한 날짜 형식과 달라 정답처리를 안해주게 된다.

 

따라서 이 문제의 주의사항은 바로 출력을 날짜형식에 맞추어 출력하는 것이다.