1. 문제 출처
https://school.programmers.co.kr/learn/courses/30/lessons/157340
2. 문의 의도
- 날짜를 기준으로 대여 가능 여부를 확인하는 쿼리
- case when 으로 비트 마스킹 후 min/max함수를 이용해 이용 가능한 차량 출력하기
3. 풀이
# car_id 기준으로 한번이라도 0이 등장하면 못빌리는 자동차
select car_id, case when possible = 1 then '대여 가능' else '대여중' end as AVAILABILITY
from(
select car_id,
min(possible) as possible
from
(
select car_id,
DATE_FORMAT(start_date,'%Y-%m-%d'), DATE_FORMAT(end_date,'%Y-%m-%d'),
case when start_date <= '2022-10-16' and end_date >= '2022-10-16' then 0
else 1 end as possible # 해당하는 기간에 16일이 껴있으면 0(불가), 1(가능)
from car_rental_company_rental_history
order by car_id asc
) t1
group by car_id
) t2
order by car_id desc
'Data Science > SQL' 카테고리의 다른 글
[프로그래머스] 자동차 대여 기록에서 장기/단기 대여 구분하기 (1) | 2025.06.05 |
---|---|
[프로그래머스] 조건에 맞는 사용자 정보 조회하기 (0) | 2025.05.30 |
[LeetCode] 570 Managers with at Least 5 Direct Reports (0) | 2025.05.28 |
[프로그래머스] 가격대 별 상품 개수 구하기 (0) | 2025.05.28 |
MySQL 서버 설치하기, DBeaver로 데이터 생성, 조회하기 (0) | 2023.12.29 |