코테 공부
[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(날짜, '형태')