코딩테스트/SQL

[MySQL] 조건별로 분류하여 주문상태 출력하기

rlatotquf45 2024. 10. 26. 11:57
728x90
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/131113

문제 요약

주어진 FOOD_ORDER 테이블에서 2022년 5월 1일을 기준으로 주문 ID, 제품 ID, 출고일자, 그리고 출고 여부를 조회하는 SQL 쿼리를 작성해야 합니다.

  • 출고 여부는 출고일(OUT_DATE)이 2022년 5월 1일 이전이면 "출고완료", 그 이후면 "출고대기", 출고일이 미정이면 "출고미정"으로 구분합니다.
  • 결과는 주문 ID를 기준으로 오름차순 정렬해야 합니다.

풀이 방법

 

  • SELECT 문에서 주문 ID, 제품 ID, 출고일자, 출고 여부를 선택합니다.
  • 출고 여부는 CASE문을 사용하여 OUT_DATE 값에 따라 결정합니다.
    • OUT_DATE가 2022-05-01 이전이거나 같으면 "출고완료"로 표시.
    • OUT_DATE가 NULL이면 "출고미정"으로 표시.
    • 그 외의 경우는 "출고대기"로 표시.
  • ORDER BY 절을 사용하여 ORDER_ID를 기준으로 오름차순으로 정렬합니다.

 

정답 코드

-- 코드를 입력하세요
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 is null then '출고미정'
    else '출고대기'
end as '출고여부'
from food_order
order by order_id asc

새롭게 배운 내용

 

  • CASE 문: 조건에 따라 다른 값을 반환하여 "출고 여부"를 결정하는 데 사용했습니다.
  • DATE_FORMAT 함수: 날짜 형식을 "YYYY-MM-DD" 형식으로 맞추어 출력하기 위해 사용했습니다.

 

728x90
반응형