https://school.programmers.co.kr/learn/courses/30/lessons/131113
프로그램 제작자
코드 중심 개발자를 고용하십시오. 스택 기반 위치 일치. 프로그래머를 위한 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.
프로그래머.co.kr
문제 설명
다음은 식품공장의 주문정보입니다.
음식 주문 테이블. 음식 주문 형식은 다음과 같습니다 주문 번호, 제품 번호, 수량, 생산 날짜, 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″이라고 해도 결과는 정답