반응형
문제
문제 설명
다음은 식품공장의 주문정보를 담은 FOOD_ORDER 테이블입니다. FOOD_ORDER 테이블은 다음과 같으며 ORDER_ID, PRODUCT_ID, AMOUNT, PRODUCE_DATE, IN_DATE, OUT_DATE, FACTORY_ID, WAREHOUSE_ID는 각각 주문 ID, 제품 ID, 주문량, 생산일자, 입고일자, 출고일자, 공장 ID, 창고 ID를 의미합니다.
Column 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를 기준으로 오름차순 정렬해 주세요.
예시
FOOD_ORDER 테이블이 다음과 같을 때
ORDER_ID | PRODUCT_ID | AMOUNT | PRODUCE_DATE | IN_DATE | OUT_DATE | FACTORY_ID | WAREHOUSE_ID |
OD00000051 | P0002 | 4000 | 2022-04-01 | 2022-04-21 | 2022-04-21 | FT19970003 | WH0005 |
OD00000052 | P0003 | 2500 | 2022-04-10 | 2022-04-27 | 2022-04-27 | FT19970003 | WH0006 |
OD00000053 | P0005 | 6200 | 2022-04-15 | 2022-04-30 | 2022-05-01 | FT19940003 | WH0003 |
OD00000054 | P0006 | 1000 | 2022-04-21 | 2022-04-30 | NULL | FT19940003 | WH0009 |
OD00000055 | P0008 | 1500 | 2022-04-25 | 2022-05-11 | 2022-05-11 | FT19980003 | WH0009 |
SQL을 실행하면 다음과 같이 출력되어야 합니다.
ORDER_ID | PRODUCT_ID | OUT_DATE | 출고여부 |
OD00000051 | P0002 | 2022-04-21 | 출고완료 |
OD00000052 | P0003 | 2022-04-27 | 출고완료 |
OD00000053 | P0005 | 2022-05-01 | 출고완료 |
OD00000054 | P0006 | 출고미정 | |
OD00000055 | P0008 | 2022-05-11 | 출고대기 |
코드
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;
SELECT ~ FROM 절
FOOD_ORDER 테이블의 ORDER_ID, PRODUCT_ID, OUT_DATE, OUT_DATE를 활용한 출고여부를 조회한다.
OUT_DATE는 DATE_FORMAT 함수를 통해 %Y-%m-%d 형태로 변환하여 조회한다.
CASE 절을 사용하여 OUT_DATE가 2022년 5월 1일보다 크면 '출고대기', 작거나 같으면 '출고완료' 그 외엔 '출고미정'으로 지정하여 조회한다.
출고여부를 IF 함수를 통해 다음과 같이 조회할 수도 있다.
IF(OUT_DATE > '2022-05-01', '출고대기', IF(OUT_DATE <= '2022-05-01', '출고완료', '출고미정')) AS 출고여부
ORDER BY 절
ORDER_ID를 기준으로 오름차순 정렬한다.
반응형
'코딩 테스트(Coding Test) > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 없어진 기록 찾기 - MySQL (0) | 2023.06.07 |
---|---|
[프로그래머스] 조건에 맞는 사용자와 총 거래금액 조회하기 - MySQL (0) | 2023.06.06 |
[프로그래머스] 카테고리 별 도서 판매량 집계하기 - MySQL (0) | 2023.06.04 |
[프로그래머스] 오랜 기간 보호한 동물(2) - MySQL (0) | 2023.06.03 |
[프로그래머스] 있었는데요 없었습니다 - MySQL (0) | 2023.06.02 |