코딩테스트
프로그래머스 조건별로 분류하여 주문상태 출력하기
코드 죄수
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를 적어주면 프로그래머스에서 지정한 날짜 형식과 달라 정답처리를 안해주게 된다.
따라서 이 문제의 주의사항은 바로 출력을 날짜형식에 맞추어 출력하는 것이다.