자동차 대여 기록에서 대여중/ 대여 가능 여부 구분하기
해당 케이스에 속하는 범의를 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
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 |