Recent Posts
Recent Comments
ღ yuni_world ღ
[MySQL] [프로그래머스 level 3] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 본문
📌 문제링크
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값으로 설정
'MySQL > 프로그래머스' 카테고리의 다른 글
| [MySQL] [프로그래머스 level 3] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2025.06.18 |
|---|---|
| [MySQL] [프로그래머스 level 3] 업그레이드 할 수 없는 아이템 구하기 (0) | 2025.06.17 |
| [MySQL] [프로그래머스 level 4] FrontEnd 개발자 찾기 (0) | 2025.06.12 |
| [MySQL] [프로그래머스 level 4] 언어별 개발자 분류하기 (2) | 2025.06.04 |
| [MySQL] [프로그래머스 level 3] 부서별 평균 연봉 조회하기 (0) | 2025.06.04 |