문제 59. 자동차 대여 기록에서 대여 중/ 대여(MAX와 BETWEEN)
문제를 보고 쉽겠는데 생각했다 코 깨졌다...
처음에
CASE YEAR(END_DATE) < '2022' && MONTH (END_DATE) < '10' && DAY(END_DATE) < '16')
|| CASE YEAR( START_DATE ) > '2022' && MONTH (START_DATE) > '10' && DAY( START_DATE ) > '16')
~~~~~
THEN '대여중'
ELSE '대여 가능'
END AS 'AVAILABILITY'
이런 식으로 모든 경우를 다 적을 생각이었다...
결국 못 풀고 다른 사람의 코드를 보니,
CASE
WHEN MAX('2022-10-16' BETWEEN START_DATE AND END_DATE) THEN '대여중'
ELSE '대여 가능'
END AS 'AVAILABILITY'
으로 BETWEEN 함수로 간략하게 표현할 수 있었다!!!
BETWEEN 함수는 TRUE, FALSE를 반환하는데
여기에 MAX('2022-10-16' BETWEEN START_DATE AND END_DATE)로 사용하는 이유는,
TRUE = 1, FALSE = 0으로
같은 자동차에 대한 대여 날짜가 하나라도 TRUE가 있으면,
1 > 0 기 때문에 무조건 '대여중'을 띄워주기 때문이었다!!!
(이거 이해할려고 30분 넘게 생각함 ㅋㅋㅋㅋㅋㅋ)
제출한 코드 :
SELECT CAR_ID,
CASE
WHEN MAX('2022-10-16' BETWEEN START_DATE AND END_DATE) THEN '대여중'
ELSE '대여 가능'
END AS 'AVAILABILITY'
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC