-
[MySQL] 프로그래머스 Lv 3. 조건별로 분류하여 주문상태 출력하기 정답풀이SQL 2023. 8. 12. 21:02
문제 설명
다음은 식품공장의 주문정보를 담은 FOOD_ORDER 테이블입니다. FOOD_ORDER 테이블은 다음과 같으며 ORDER_ID, PRODUCT_ID, AMOUNT, PRODUCE_DATE, IN_DATE, OUT_DATE, FACTORY_ID, WAREHOUSE_ID 는 각각 주문 ID, 제품 ID, 주문양, 생산일자, 입고일자, 출고일자, 공장 ID, 창고 ID를 의미합니다.
Coulmn name Type Nullable ORDER_ID VARCHAR(10) FALSE PRODUCT_ID VARCHAR(5) FALSE AMOUNT NUMBER FALSE PRODUCE_DATE DATE TRUE IN_DATE DATE TRUE OUT_DATE DATE TRUE FACTORY_ID VARCHAR(10) FALSE WAREHOUSE_ID VARCHAR(10) FALSE 문제
FOOD_ORDER 테이블에서 5월 1일을 기준으로 주문 ID, 제품 ID, 출고일자, 출고여부를 조회하는 SQL문을 작성해주세요. 출고여부는 5월 1일까지 출고완료로 이 후 날짜는 출고 대기로 미정이면 출고미정으로 출력해주시고, 결과는 주문 ID를 기준으로 오름차순 정렬해주세요.
정답 코드
-- 조건별로 분류하여 주문상태 출력하기 SELECT ORDER_ID, PRODUCT_ID, DATE_FORMAT(OUT_DATE, '%Y-%m-%d'), CASE WHEN OUT_DATE <= '2022-05-01' THEN '출고완료' WHEN OUT_DATE > '2022-05-01' THEN '출고대기' ELSE '출고미정' END AS 출고여부 FROM FOOD_ORDER ORDER BY 1;코드 해석
FOOD_ORDER 테이블에서 주문 ID, 제품 ID, 출고일자, 출고여부를 조회한다.
이때, 출고일자의 DATE_FORMAT은 ‘2022-03-16’과 같이 ‘%Y-%m-%d’의 형식으로 출력하게 하고, 출고여부는 CASE WHEN 구문을 써서 출고일자가 ‘2022-05-01’ 까지 ‘출고완료’로 이후 날짜는 ‘출고대기’로 나머지 경우는 ‘출고미정’으로 나오게 하고 컬럼명은 ‘출고여부’로 지정한다.
결과는 주문 ID를 기준으로 오름차순 정렬하는 코드이다.
결과

느낀 점/어려운 점/개선점
SELECT 절에 CASE WHEN을 써야 하는 문제는 처음이라서 순간 당황하긴 했는데, CASE WHEN은 많이 사용해 본 구문이라서 쉽게 풀 수 있었다.
'SQL' 카테고리의 다른 글
[MySQL] 프로그래머스 Lv 3. 조건에 맞는 사용자와 총 거래금액 조회하기 정답풀이 (0) 2023.08.12 [BigQuery] 웹사이트에서의 행동을 파악하는 데이터 추출하기 (0) 2022.05.20 [BigQuery] 다면적인 축을 사용해 데이터 집약하기 (0) 2022.05.06 [BigQuery] 시계열 기반으로 데이터 집계하기 (0) 2022.05.06 [Oracle] WHERE 절을 이용한 조건 검색 (0) 2022.04.18