on my way

[프로그래머스 코딩테스트 연습 SQL - 12] 조건별로 분류하여 주문상태 출력하기 (MySQL) 본문

algorithm/SQL

[프로그래머스 코딩테스트 연습 SQL - 12] 조건별로 분류하여 주문상태 출력하기 (MySQL)

wingbeat 2024. 7. 16. 20:28

 

 

처음 푼 코드

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

DATEDIFF 함수로 날짜를 비교함. NULL을 뒤에 처리함

 

 

 

개선 코드

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

NULL을 먼저 처리하고, 이후에 DATEDIFF없이 문자열로만 비교해서 처리할 수 있었다