https://school.programmers.co.kr/learn/courses/30/lessons/131113
문제 설명
다음은 식품공장의 주문정보입니다.
음식 주문 테이블. 음식 주문 형식은 다음과 같습니다 주문 번호, 제품 번호, 수량, 생산 날짜, IN_DATE, OUT_DATE, FACTORY_ID, WAREHOUSE_ID는 각각 주문ID, 상품ID, 주문수량, 생산일자, 보관일자, 배송일자, 공장ID, 창고ID를 나타낸다.
열 이름유형Nullable
주문 번호 | 변수(10) | 잘못된 |
제품 번호 | 변수(5) | 잘못된 |
수량 | 숫자 | 잘못된 |
생산 날짜 | 날짜 | 진짜 |
IN_DATE | 날짜 | 진짜 |
구식 | 날짜 | 진짜 |
공장 번호 | 변수(10) | 잘못된 |
창고 번호 | 변수(10) | 잘못된 |
질문
음식 주문 테이블에 주문ID, 상품ID, 배송일자, 상품출고여부를 조회하는 SQL문을 작성하고 시간은 5월 1일이다.
5월 1일 이전에 발송현황이 완료되고 그 이후 날짜가 발송보류로 설정되지 않은 경우에는 Pending으로 출력되며, 오름차순으로 정렬됩니다.
예
음식 주문 테이블이 생겼을 때
ORDER_IDPRODUCT_IDAMOUNTPRODUCE_DATEIN_DATEOUT_DATEFACTORY_IDWAREHOUSE_ID
OD00000051 | P0002 | 4000 | 2022-04-01 | 2022-04-21 | 2022-04-21 | FT19970003 | WH0005 |
OD00000052 | P0003 | 2500 | 2022-04-10 | 2022-04-27 | 2022-04-27 | FT19970003 | WH0006 |
OD00000053 | P0005 | 6200 | 2022-04-15 | 2022-04-30 | 2022-05-01 | FT19940003 | WH0003 |
OD00000054 | P0006 | 1000 | 2022-04-21 | 2022-04-30 | 유효하지 않은 | FT19940003 | WH0009 |
OD00000055 | P0008 | 1500 | 2022-04-25 | 2022-05-11 | 2022-05-11 | FT19980003 | WH0009 |
SQL을 실행하면 다음과 같이 출력됩니다.
ORDER_IDPRODUCT_IDOUT_DATE 배송 상태
OD00000051 | P0002 | 2022-04-21 | 배송완료 |
OD00000052 | P0003 | 2022-04-27 | 배송완료 |
OD00000053 | P0005 | 2022-05-01 | 배송완료 |
OD00000054 | P0006 | 우유부단한 | |
OD00000055 | P0008 | 2022-05-11 | 배달 대기 |
내 솔루션
SELECT ORDER_ID,PRODUCT_ID,date_format(OUT_DATE,"%Y-%m-%d") OUT_DATE,
case
when OUT_DATE <= date("2022-05-01") then "출고완료"
when OUT_DATE is null then "출고미정"
else "출고대기" end "출고여부"
from FOOD_ORDER
order by ORDER_ID
처음으로 풀었어요 when OUT_DATE <= 2022-05-01 그럼 "출고"될 줄 알았는데 계산식이라 이해가 되서 정답이 안 나왔네요.
이를 수정하기 위해 날짜 함수를 통해 날짜 데이터로 변환하여 해결했습니다.
추신 “2022-05-01″이라고 해도 결과는 정답