본문 바로가기
문제풀이/SQL(My sql)

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

by kime2 2024. 1. 8.
출처

 

문제

FOOD_ORDER 테이블에서 5월 1일을 기준으로 주문 ID, 제품 ID, 출고일자, 출고여부를 조회하는 SQL문을 작성해주세요. 출고여부는 5월 1일까지 출고완료로 이 후 날짜는 출고 대기로 미정이면 출고미정으로 출력해주시고, 결과는 주문 ID를 기준으로 오름차순 정렬해주세요.

 

문제에 대한 해석

 5월 1일을 기준으로 출고여부에 대한 세그먼트작성

 

풀이(MYSQL)

select order_id, product_id, date_format(out_date,'%Y-%m-%d'),
case when out_date is null then '출고미정'
     when out_date <='2022-05-01' then '출고완료'
     else '출고대기' end as "출고여부"
from food_order
order by order_id

 

작동순서

💡SQL 실행 순서는 From -> Where -> Group by -> Having -> Select -> Order by ->결과반환

 

  1. FROM 절: food_order테이블 에서
  2. SELECT 절: order_id, product_id와 out_date를 연-월-일에 맞추어 문자화하여 조회할 때 out_date 컬럼에서 데이터가 없다면 출고미장, 2022-05-01까지 출거되었으면 출고완료 아니면 출고대기로 변경하라
  3. ORDER BY 절: order_id의 오름차순

 

다른사람 풀이

SELECT order_id, product_id, DATE_FORMAT(out_date, '%Y-%m-%d'),
CASE
WHEN out_date IS NULL THEN '출고미정'
WHEN DATEDIFF('2022-05-01', out_date) >= 0 THEN '출고완료'
WHEN DATEDIFF('2022-05-01', out_date) < 0 THEN '출고대기'
END AS 출고여부
FROM food_order
ORDER BY 1;

배운점

  • 날짜를 작성할 때는 ''로 작성해야 인식된다. 증 숫자빼고 모든 데이터는 ''필요