-
[프로그래머스]자동차 대여 기록에서 장기/단기 대여 구분하기(Lv.1)SQL 2023. 4. 17. 09:23
CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일이 2022년 9월에 속하는 대여 기록에 대해서 대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는 컬럼(컬럼명: RENT_TYPE)을 추가하여 대여기록을 출력하는 SQL문을 작성해주세요. 결과는 대여 기록 ID를 기준으로 내림차순 정렬해주세요.
SELECT HISTORY_ID, CAR_ID, DATE_FORMAT(START_DATE,'%Y-%m-%d') as START_DATE, DATE_FORMAT(END_DATE, '%Y-%m-%d') AS END_DATE, CASE WHEN END_DATE - START_DATE >= 29 THEN '장기 대여' ELSE '단기 대여' END AS RENT_TYPE FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE START_DATE >= '2022-09-01' AND START_DATE<= '2022-09-30' ORDER BY HISTORY_ID DESC;
[MySQL에서 조건문 작성하는 두 가지 방법]
- IF
- CASE ~ WHEN~
여기까지 했는데 아무리 봐도 틀린 부분이 안보였다.
결과 표 보니까 분류는 잘 된 것 같던데
냅다 END_DATE에서 START_DATE를 빼면 안되나..
도저히 모르겠어서 정답 참고!
DATEDIFF 함수를 사용한 사람들이 많았다.
날짜 차이를 가져오는 함수였다. (나의 구글링의 한계..)
SELECT HISTORY_ID, CAR_ID, DATE_FORMAT(START_DATE,'%Y-%m-%d') as START_DATE, DATE_FORMAT(END_DATE, '%Y-%m-%d') AS END_DATE, CASE WHEN DATEDIFF(END_DATE, START_DATE) >= 29 THEN '장기 대여' ELSE '단기 대여' END AS RENT_TYPE FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE START_DATE >= '2022-09-01' AND START_DATE<= '2022-09-30' ORDER BY HISTORY_ID DESC;
냅다 빼버린 부분만 DATEDIFF로 바꾸니까 바로 정답!
'SQL' 카테고리의 다른 글
[프로그래머스]조건에 부합하는 중고거래 댓글 조회하기(LV.1) (0) 2023.06.12 [프로그래머스]과일로 만든 아이스크림 고르기(LV.1) (0) 2023.06.11 [프로그래머스]Lv.1 문제 모음 (0) 2023.04.13 [프로그래머스]입양 시각 구하기(Lv.4) (0) 2023.04.12 [프로그래머스]우유와 요거트가 담긴 장바구니(Lv.4) (0) 2023.04.12