YataNox

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

DB/Programmers SQL

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

에이디/김우진 2023. 10. 19. 13:48

https://school.programmers.co.kr/learn/courses/30/lessons/157340

 

- CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 자동차ID와 자동차 대여여부를 출력한다

단, 대여여부는 2022년 10월 16일에 대여중인 자동차를 대여 중, 아니면 대여가능으로 표시해주고 AVAILABILITY로 표기한다. 또한 반납 날짜가 10월 16일일 경우에도 대여중으로 표기하고 결과를 자동차 id 기준 내림차 정렬한다.

1. car_id 기준으로 그룹핑한다.

2.. case 문으로 시작일이 10월 16일 보다 작거나 종료일이 16일보다 큰 id를 뽑아서 그 값에 속하는 car_id를 대여중 아닌것을 대여 가능으로 출력한다.

- SQL 

mysql : SELECT CAR_ID,
CASE
    WHEN CAR_ID IN (SELECT CAR_ID FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE START_DATE <= '2022-10-16' AND END_DATE >= '2022-10-16') THEN '대여중'
    ELSE '대여 가능'
END AS AVILABILITY 
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC;

 

oracle : SELECT car_id,
CASE
    WHEN car_id IN (
        SELECT car_id 
        FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY 
        WHERE start_date <= TO_DATE('2022-10-16', 'yyyy-mm-dd') AND end_date >= TO_DATE('2022-10-16', 'yyyy-mm-dd')
    ) THEN '대여중'
    ELSE '대여 가능'
END AS AVILABILITY 
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY car_id
ORDER BY car_id DESC;