자두의 데브로그

[MySQL] 프로그래머스 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 본문

코딩테스트/SQL

[MySQL] 프로그래머스 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기

왕자두 2024. 10. 11. 03:19

https://school.programmers.co.kr/learn/courses/30/lessons/157340

 

case ~end 구문에도 max를 사용할 수 있는 줄 몰랐다.. 처음에는 max(end_date) 했을 때의 값과 2022-10-16를 비교하는 방식으로 대여 중인지 아닌지를 구분했는데 그렇게 하니까 대여를 하지 않았던 기간에 대해서는 아예 고려하고 있지 않아 완벽히 틀린 풀이였다.

 

2022-10-16이 start_date랑 end_date 사이에 있으면 대여중으로, 아니면 대여 가능으로 저장하되, max 값을 적용하여 여러 날짜 중 가장 최근의 값에 대해서 가져와서 비교했다.

-- 코드를 입력하세요
SELECT CAR_ID, 
max(case 
    when '2022-10-16' between DATE_FORMAT(start_date, '%Y-%m-%d') and DATE_FORMAT(end_date, '%Y-%m-%d') then '대여중'
    else '대여 가능'
end) as AVAILABILITY
from CAR_RENTAL_COMPANY_RENTAL_HISTORY
group by CAR_ID
order by CAR_ID desc;