01/22 SQL 문제풀이

Data Architect / Engineer·2024년 1월 22일
1

1일_1SQL

목록 보기
11/63
post-thumbnail

문제

  • 프로그래머스 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 함수를 사용하여 위와 같이 출력한다.

profile
질문은 계속돼 아오에

0개의 댓글