level3_조건별로 분류하여 주문상태 출력하기
2024. 6. 26. 21:25ㆍMYSQL_알고리즘(코딩테스트)/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문으로 다시 나타내서 제출했다... ㅠㅠ
'MYSQL_알고리즘(코딩테스트) > level3' 카테고리의 다른 글
| level3_대여 기록이 존재하는 자동차 리스트 구하기 (0) | 2024.07.04 |
|---|---|
| level3_오랜 기간 보호한 동물(2) (0) | 2024.06.25 |
| level3_오랜 기간 보호한 동물(1) (0) | 2024.06.17 |
| level3_있었는데요 없었습니다. (0) | 2024.06.16 |
| level3_카테고리 별 도서 판매량 집계하기 (1) | 2024.06.15 |