본문 바로가기
코딩테스트/SQL

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

by 박창준 2024. 12. 2.

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

문제 해석

2022년 10월 16일에 대여 중인 자동차인 경우에는 대여중으로 표시하고 아니면 대여 가능이라고 표시한다.

 

문제 풀이

CAR_ID가 여러개여서 대여중인 CAR_ID가 있더라도 다른 날짜와 겹치면 대여 가능으로 출력되었다.

그래서 먼저 대여중인 테이블을 먼저 뽑아야겠다고 생각했고 해당 테이블과 LEFT JOIN을 하면 대여 가능한 CAR_ID도 같이 뽑을 수 있으니 해당 방식으로 풀어봤다.

 

 

SELECT 
    T.CAR_ID,
    CASE 
        WHEN A.CAR_ID IS NOT NULL THEN '대여중'
        ELSE '대여 가능'
    END AS AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY T
LEFT JOIN (
    SELECT CAR_ID
    FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY 
    WHERE '2022-10-16' BETWEEN START_DATE AND END_DATE
) AS A
ON T.CAR_ID = A.CAR_ID
GROUP BY T.CAR_ID
ORDER BY T.CAR_ID DESC;

 

댓글