본문 바로가기

TIL

240717 TIL

SQL

59.자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기

 

 

 

이래저래 머리 굴려가면서 작성했던 코드는 아래와 같다.

select  distinct CAR_ID,
        case when substr(a.minnn,1,10) < '2022-10-16'
        and substr(a.maxxx,1,10) >= '2022-10-16' then '대여중'
        else '대여 가능'
        end AVAILABILITY
from 
(
select  history_id,
        car_id,
        min(start_date) over (partition by car_id) minnn,
        max(end_date) over (partition by car_id) maxxx
from car_rental_company_rental_history
) a
order by 1 desc

 

일단 car_id  별로 start_date 와 end_date 의 min max 를 구해서 파티션을 나누면 될것 이라 생각 했는데

여기서 맹점이...

 

2022년 10월 16일 전에 반납하고 2022년 10월 16일 이후에 빌리는 상황은 내가 만든 조건에서 벗어난다는 점이다....

 

결국 검색을 했고 나온 코드는 아래와 가탇.

 

select  CAR_ID,
        case when count(if('2022-10-16' between start_date and end_date,1,null)) > 0 then '대여중'
        else '대여 가능'
        end AVAILABILITY
from car_rental_company_rental_history
group by car_id
order by car_id desc

 

2022년 10월 16일이 포함되어 있으면 차 빌릴 수 없는 상태고 1을 부여

그게 아니라면 차를 빌릴 수 있다는 뜻으로 생각하고 null을 부여

그다음에 car_id 별로 group by 할꺼니까 count 해서 0보다 크다면 그것은 차를 빌릴 수 없다니까 '대여중'

그 외에는 '대여 가능' 부여

'TIL' 카테고리의 다른 글

240719 TIL  (0) 2024.07.19
240718 TIL  (0) 2024.07.18
240712 TIL  (0) 2024.07.12
240711 TIL  (0) 2024.07.11
240709 TIL (join과 관련하여)  (0) 2024.07.10