문제
- 프로그래머스 SQL 문제
조건별로 분류하여 주문상태 출력하기
/레벨 3
- 문제 내용 : 하단 프로그래머스 문제 링크 참조
FOOD_ORDER 테이블에서 5월 1일을 기준으로 주문 ID, 제품 ID, 출고일자, 출고여부를 조회하는 SQL문을 작성해주세요. 출고여부는 5월 1일까지 출고완료로 이 후 날짜는 출고 대기로 미정이면 출고미정으로 출력해주시고, 결과는 주문 ID를 기준으로 오름차순 정렬해주세요.
내가 작성한 Query
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 ASC;
- 'OUT_DATE'를 기준으로 'OUT_DATE'가 2022-05-01 보다 이전 날짜이면, '출고완료'
, 이후 날짜이면 '출고대기',NULL
값을 가지면 '출고미정' 이란 데이터를 추출하기로 하고 문제를 접근
CASE ~ WHEN ~ THEN
을 사용하여 해당 데이터들을 가지는 컬럼을 추가하고 '출고여부' 라는 별칭을 주어 데이터를 추가한다.
문제에서 요구하는 'ORDER_ID', 'PRODUCT_ID', '출고여부' 데이터를 출력하되,
ORDR BY
를 사용하여 'ORDER_ID' 기준으로 오름차순 정렬하여 출력한다.
'OUT_DATE'의 경우, 연-월-일 데이터만 추출하기 위해 DATE_FORMAT
함수를 사용하여 위와 같이 출력한다.