관리 메뉴

오늘도 배운다

조건별로 분류하여 주문상태 출력하기 / 프로그래머스, SQL 본문

코딩테스트연습(SQL)

조건별로 분류하여 주문상태 출력하기 / 프로그래머스, SQL

LearnerToRunner 2022. 11. 17. 11:19

문제

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

 

제출답안

MySQL Ver.

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

 

Oracle Ver.

SELECT order_id, 
    product_id, 
    TO_CHAR(out_date, 'YYYY-MM-DD') AS out_date,
    (CASE
        WHEN out_date IS NULL THEN '출고미정'
        WHEN out_date <=TO_DATE('2022-05-01', 'YYYY-MM-DD') THEN '출고완료'
        ELSE '출고대기'
    END) AS 출고여부
    
FROM food_order
ORDER BY 1

 

 

 

풀이 (MySQL)

더보기

테이블 및 데이터 살펴보기

SELECT * FROM food_order

SELECT 부분에서 OUT_DATE 형식을 'YYYY-MM-DD' 형식으로 바꿔주기

    DATE_FORMAT(out_date, '%Y-%m-%d') AS out_date,

 

SELECT 부분에 CASE WHEN 을 이용하여 출고여부 추가하기

>> OUT_DATE에 Null 이 있어서 신경이 쓰이는 관계로 CASE WHEN 첫번째 조건에서 Null부터 처리했습니다

    (CASE
        WHEN out_date IS NULL THEN '출고미정'
        WHEN out_date <='2022-05-01' THEN '출고완료'
        ELSE '출고대기'
    END) AS 출고여부

 

 

풀이 (Oracle)

더보기

테이블 및 데이터 살펴보기

SELECT * FROM food_order

SELECT 부분에서 OUT_DATE 형식을 'YYYY-MM-DD' 형식으로 바꿔주기

TO_CHAR(out_date, 'YYYY-MM-DD') AS out_date,

 

SELECT 부분에 CASE WHEN 을 이용하여 출고여부 추가하기

>> OUT_DATE에 Null 이 있어서 신경이 쓰이는 관계로 CASE WHEN 첫번째 조건에서 Null부터 처리했습니다

    (CASE
        WHEN out_date IS NULL THEN '출고미정'
        WHEN out_date <=TO_DATE('2022-05-01', 'YYYY-MM-DD') THEN '출고완료'
        ELSE '출고대기'
    END) AS 출고여부

 

 

문제 바로가기

 

728x90
Comments