상세 컨텐츠

본문 제목

WEEK 3 MON - 특정 기간을 기준으로 구분짓기

TIL

by ollive 2024. 7. 8. 20:50

본문

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

 

해당 케이스에 속하는 범의를 CASE로 추출하였고, MAX와 GROUP BY 를 사용하여 CAR_ID별 최근 사용기록만 가져왔다. 

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 CAR_ID
ORDER BY CAR_ID DESC

 

'대여중'인 car_id만 있는 table과  '대여 가능'인 car_id만 있는 table을 UNION을 사용하여 합치는 방법도 있다.

SELECT DISTINCT car_id, '대여중' AS availability
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE car_id IN (SELECT car_id FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
    WHERE '2022-10-16%' BETWEEN start_date AND end_date)
UNION
SELECT DISTINCT car_id, '대여 가능' AS availability
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE car_id NOT IN (SELECT car_id FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
    WHERE '2022-10-16%' BETWEEN start_date AND end_date )
ORDER BY car_id DESC

 

'대여중'인 car_id만 있는 table을 with으로 만들어 두고, 본 식에는 car_id를 중복없이 가져와서 서브쿼리를 통해 구분한다.

WITH RENT AS(SELECT car_id
             FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
             WHERE '2022-10-16' BETWEEN start_date AND end_date)

SELECT DISTINCT car_id
       ,IF (car_id in (table rent), '대여중','대여 가능') AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
ORDER BY 1 DESC

'TIL' 카테고리의 다른 글

WEEK 3 WEN DATEDIFF(date1,date2), DATE_ADD/SUB  (0) 2024.07.10
WEEK 3 TUES  (0) 2024.07.09
[WIL] 2주차  (0) 2024.07.05
[TIL] WEEK 2 FRI - DATEDIFF  (1) 2024.07.05
[TIL] WEEK 2 THUR (find_in_set)  (0) 2024.07.04

관련글 더보기