728x90
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) + 1 >= 30 THEN '장기 대여'
ELSE '단기 대여'
END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE LIKE "2022-09-%"
ORDER BY HISTORY_ID DESC;
# 22년 9월 부터 대여한 차량들을 대상으로 조사하는 것이니까 와일드카드를 넣어서 WHERE START_DATE LIKE "2022-09-%"
# 문제설명의 맨 아래 START_DATE와 END_DATE의 데이터 포맷은 예시와 일치해야 한다 했으니 DATE_FORMAT() 함수를 사용해서 "%Y-%m-%d"로 변환해준다(연월일시분초 -> 연월일)
# 시작일 기준 30일이 넘으면 "장기 대여" 그렇지 않으면 "단기 대여"로 구분하라 했으니 DATEDIFF함수를 이용해 마지막날과 시작날의 차이를 이용해 구한다.
여기서 횟수 세는 방법이 나오는데 +1을 해주어야 한다
예시를 들어 설명하면 1~10번의 등번호를 가진 선수들이 있는데 이 선수들의 수는 10명이다 하지만 단순 계산으로 마지막 번호에서 처음 번호를 빼면 10 - 1 = 9명이 되어버린다.
1~10번의 등번호를 가진 선수들이면 당연하게 10명인데 계산하면 1명이 사라지게 된다 그래서 마지막에 +1을 해주어야 제대로된 숫자 세기가 된다.
예를 들어 52번 부터 34번까지의 등번호를 가진 선수들의 숫자는 52 - 34 + 1 = 19명이 된다!
728x90
'[Coding Test] > [SQL]' 카테고리의 다른 글
[SQL] 프로그래머스/SQL lv1 조건에 맞는 도서 리스트 출력하기 (0) | 2024.03.12 |
---|---|
[SQL] 프로그래머스/SQL lv1 평균 일일 대여 요금 구하기 (0) | 2024.03.12 |
[SQL] SQL의 if문 CASE문에 대하여 (1) | 2024.03.12 |
[SQL] 프로그래머스/SQL lv1 특정 옵션이 포함된 자동차 리스트 구하기 (0) | 2024.03.11 |
[SQL] 프로그래머스/SQL lv1 조건에 부합하는 중고거래 댓글 조회하기 (0) | 2024.03.09 |