코테 공부

[SQL]조건별로 분류하여 주문상태 출력하기(☆☆☆☆)

DaEun_ 2022. 10. 21. 12:23

코딩테스트 연습 - 조건별로 분류하여 주문상태 출력하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1. MYSQL

-- 코드를 입력하세요
SELECT ORDER_ID, PRODUCT_ID, DATE_FORMAT(OUT_DATE, '%Y-%m-%d'),
    CASE
        WHEN OUT_DATE > "2022-05-01" THEN '출고대기'
        WHEN OUT_DATE IS NULL THEN '출고미정'
        ELSE '출고완료'
    END AS '출고여부'
FROM FOOD_ORDER 
ORDER BY ORDER_ID
-- 코드를 입력하세요
SELECT ORDER_ID, PRODUCT_ID, date_format(OUT_DATE, '%Y-%m-%d') AS OUT_DATE,
IF(OUT_DATE <='2022-05-01','출고완료',IF(OUT_DATE IS NULL, '출고미정', '출고대기')) AS "출고여부"
FROM FOOD_ORDER
ORDER BY ORDER_ID;
  • 날짜->문자열로 변환        DATE_FORMAT(변수명 "%Y-%m-%d %h:%i:%s') 
  • IF(조건, A,B)
  • 여기는 date랑 문자열이랑 비교가 가능한가???

 

MYSQL다른 분들 풀이 참고

-- 코드를 입력하세요
SELECT ORDER_ID, PRODUCT_ID, DATE_FORMAT(OUT_DATE, '%Y-%m-%d'),
    CASE
        WHEN DATEDIFF(OUT_DATE, "2022-05-01") > 0 THEN '출고대기'
        WHEN OUT_DATE IS NULL THEN '출고미정'
        ELSE '출고완료'
    END AS '출고여부'
FROM FOOD_ORDER 
ORDER BY ORDER_ID
  • DATEDIFF(A,B): A와 B의 날짜차이 하루?????라면

 

 

 

 

2. ORACLE

SELECT ORDER_ID, PRODUCT_ID, TO_CHAR(OUT_DATE,'yyyy-MM-dd'), 
    CASE WHEN OUT_DATE <= TO_DATE('2022-05-01','YYYY-MM-DD') THEN '출고완료'
         WHEN OUT_DATE > TO_DATE('2022-05-01','YYYY-MM-DD') THEN '출고대기'
         ELSE '출고미정'
    END 
    AS "출고여부"
FROM FOOD_ORDER
ORDER BY ORDER_ID;
  • CASE WHEN ~ THEN    WHEN ~THEN   ELSE   END 
  • 문자열->날짜로 바꾸기  TO_DATE('2020-01-01','형태') 
  • 날짜->문자열로 바꾸기   TO_CHAR(날짜, '형태')