데이터 놀이터
String, Date - 자동차 대여 기록에서 장기/단기 대여 구분하기 본문
728x90
1. 문제
CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서
대여 시작일이 2022년 9월에 속하는 대여 기록에 대해서
대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는 컬럼(컬럼명: RENT_TYPE)을 추가하여
대여기록을 출력하는 SQL문을 작성해주세요.
결과는 대여 기록 ID를 기준으로 내림차순 정렬해주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/151138
2. 문제 조건
- 대여 시작일이 2022년 9월에 속하는 대여 기록 -> WHERE 조건
- 대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는 컬럼(컬럼명: RENT_TYPE)을 추가-> CASE 또는 IF
- 대여 기록 ID를 기준으로 내림차순 정렬 -> ORDER BY
3. 코드 작성
/*
1. 대여 시작일이 2022년 9월
2. 대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는 컬럼(컬럼명: RENT_TYPE)을 추가
3. 대여기록 출력
4. 대여 기록 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
, IF(DATEDIFF(END_DATE, START_DATE) + 1 >= 30, '장기 대여', '단기 대여') AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE DATE_FORMAT(START_DATE, '%Y-%m') = '2022-09'
ORDER BY HISTORY_ID DESC;
4. 회고
- 조건문을 사용하는 경우에 CASE 대신에 IF를 사용해보았다. 다른 사람들의 풀이를 참고했을때 IF 문을 사용했을때 더 코드가 간결해보였기 때문이다.
- IF(조건, 조건이 참인 경우 출력, 거짓인 경우 출력)
- IF문 안에 IF를 넣으면서 다중 조건을 걸 수도 있다.
- 기간 계산을 하는 경우에 사용하는 DATEDIFF 함수를 복습해보았다. 기간 계산할 때, 항상 + 1을 해주어야 한다는 걸 잊으면 안된다.
728x90
'SQL' 카테고리의 다른 글
String, Date - 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2023.08.26 |
---|---|
String, Date - 취소되지 않은 진료 예약 조회하기 (0) | 2023.08.24 |
String, Date - 카테고리 별 상품 개수 구하기 (0) | 2023.08.22 |
String, Date - 자동차 평균 대여 기간 구하기 (0) | 2023.08.22 |
IS NULL - 경기도에 위치한 식품창고 목록 출력하기 (0) | 2023.08.21 |