-
<프로그래머스> 조건별로 분류하여 주문상태 출력하기코딩테스트/SQL 코딩테스트 2023. 12. 20. 16:40
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/131113
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 문제 요구사항
- 주문ID, 제품ID, 출고일자, 출고여부를 조회
- 출고 여부는 5월 1일을 기준으로 출고일자가 5월 1일까지는 출고완료, 이후의 날짜는 출고대기 미정이면 출고미정으로 출력
- 결과는 주문ID를 기준으로 오름차순 정렬
CASE WHEN ~ THEN 구문을 이용해 2022년 5월 1일과 비교하여 출고여부를 출력함
출고일자가 미정이라는 뜻은 값이 빈 값 즉 NULL값이라는 것이므로 IS NULL 로 비교함
1) Oracle
SELECT ORDER_ID, PRODUCT_ID, TO_CHAR(OUT_DATE,'YYYY-MM-DD') OUT_DATE, CASE WHEN TO_CHAR(OUT_DATE,'YYYY-MM-DD') <= '2022-05-01' THEN '출고완료' WHEN TO_CHAR(OUT_DATE,'YYYY-MM-DD') > '2022-05-01' THEN '출고대기' WHEN OUT_DATE IS NULL THEN '출고미정' END AS 출고여부 FROM FOOD_ORDER ORDER BY ORDER_ID;
Oracle에서는 날짜 형식의 데이터와 비교를 위해 String 형태의 데이터로 바꿔줄 필요가 있음 따라서
TO_CHAR를 이용함
2) MySQL
SELECT ORDER_ID, PRODUCT_ID, DATE_FORMAT(OUT_DATE, '%Y-%m-%d'), CASE WHEN OUT_DATE IS NULL THEN '출고미정' WHEN OUT_DATE <= '2022-05-01' THEN '출고완료' WHEN OUT_DATE > '2022-05-01' THEN '출고대기' END '출고여부' FROM FOOD_ORDER ORDER BY ORDER_ID;
MySQL에서는 암묵적인 형변환이 가능하기 때문에 따로 변형을 해줄 필요 없이 바로 텍스트 데이터와 DATETIME형식 데이터가 비교가 가능함
'코딩테스트 > SQL 코딩테스트' 카테고리의 다른 글
<프로그래머스> 성분으로 구분한 아이스크림 총 주문량 (0) 2023.12.20 <프로그래머스> 조건에 맞는 도서와 저자 리스트 출력하기 (1) 2023.12.20 <프로그래머스> 보호소에서 중성화한 동물 (1) 2023.12.19 <프로그래머스> 오랜 기간 보호한 동물(2) (0) 2023.12.19 <프로그래머스> 있었는데요 없었습니다 (0) 2023.12.19 - 문제 요구사항