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

yenpkr·2025년 2월 28일
0

sql

목록 보기
37/91

문제

제출

SELECT car_id, max(case when '2022-10-16' between start_date and end_date then '대여중'
                    else '대여 가능'
                    end) AVAILABILITY
from car_rental_company_rental_history
group by 1
order by car_id desc

group by 하고 같은 car_id 중 '대여중'이 있는 car_id이면 '대여중'이 출력되도록 하려고 했다.
MAX 함수 를 사용했다.

📌 새로 배운 내용

✅ MAX

그룹 내에서 가장 우선순위가 높은 값을 선택한다.
→ 그룹 내에서 가장 큰(사전순으로 뒤에 오는) 값을 선택

  • 같은 자동차에 여러 대여정보가 있을 때
    '대여중'이 있는 경우 '대여중'이 '대여 가능'보다 사전순으로 뒤에 있기 때문에 '대여중'이 선택된다.

또 다른 답 (서브쿼리 사용)

SELECT car_id, if(car_id in (select car_id 
                   from car_rental_company_rental_history
                   where '2022-10-16' between start_date and end_date),'대여중','대여 가능') AVAILABILITY
from car_rental_company_rental_history
group by 1
order by car_id desc

car_id가 한 번이라도 대여중이면 전체가 ‘대여중’으로 통일됨.

0개의 댓글