level3_조건별로 분류하여 주문상태 출력하기

2024. 6. 26. 21:25MYSQL_알고리즘(코딩테스트)/level3

 

 

내가 제출한 코드

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;
  • SELCET절
    • DATE_FORMAT를 쓰는 이유는 OUT_DATE의 형식에서보면 '시-분-초'까지 다 나온다. 원하는 결과값이 '년-월-일'이므로 'YYYY-MM-DD'형식으로 포맷팅한다.
  • CASE절
    • OUT_DATE가 '2022-05-01' 이후이면 '출고대기'를 반환한다.
    • OUT_DATE가 '2022-05-01' 이하이면 '출고완료'를 반환한다.
    • OUT_DATE가 NULL인 경우에 대한 조건은 없지만, ELSE 절이 마지막에 위치하여 기본값으로 '출고미정'을 반환하도록 한다.

  • FROM절
    • FOOD_ORDER 테이블에서 가져온다.
  • ORDER절
    • 결과를 ORDER_ID 기준으로 오름차순 정렬한다.

 

 

시행착오....

문제도 제대로 읽지도 않고...IF를 사용하여 나타냈다....

SELECT ORDER_ID, PRODUCT_ID, OUT_DATE,
IF (OUT_DATE > "2022-05-01", "출고대기","출고완료") AS 출고여부
FROM FOOD_ORDER
ORDER BY ORDER_ID;

 

여기서 출고미정도 빼먹은 것도 있고, IF함수를 사용할 때는 NULL값을 별도로 처리 할 수 없다.

이 문제에서는 CASE문을 사용하는 것이 더 적합하다는 걸 찾아내고 CASE문으로 다시 나타내서 제출했다... ㅠㅠ