ღ yuni_world ღ

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

MySQL/프로그래머스

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

ღ유닝이ღ 2025. 6. 14. 18:06

📌 문제링크

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


📌 문제풀이

select car_id,
    case
        when max(case 
                 when '2022-10-16' between start_date and end_date then 1 
                 else 0 end) = 1 then '대여중'
        else '대여 가능'
    end as availabilty
from CAR_RENTAL_COMPANY_RENTAL_HISTORY
group by 1
order by 1 desc

📖 NOTE

  • max함수를 쓴 이유는 아래와 같음
    • 하나의 car_id당 여러 날짜의 대여 정보가 포함되어 있음  (ex> car_id : 1, start/end : 22/10/01~22/10/02, 22/10/16~22/10/17)
    • 따라서 먼저 2022-10-16 이 start_date와 end_date 사이에 포함되어 있으면 1, 아니면 0이라는 변수를 생성 
    • 이때 '1이 반환된다면 2022-10-16 에 이미 대여예정이 되어 있다' 라는 것을 의미 하므로
    • max값이 1 -> '대여중', 0 -> '대여 가능' 으로 availabilty값으로 설정