코딩테스트 연습 - 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

스칼라 서브 쿼리에 대해 성능 개선을 위해 인라인 뷰와 JOIN하여 코드를 구성했다. '2022-10-16'에 속하는 CAR_ID가 있으면 1의 값을 써주었고, GROUP BY와 SUM을 통해 1 이상이면 '2022-10-16'에 속한 적이 있으므로 대여중을 출력해주었다.

 

SELECT E.CAR_ID, IF(SUM(A.VAL)>=1, '대여중', '대여 가능') AS AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY E LEFT OUTER JOIN (
    SELECT Q.CAR_ID, 1 AS VAL
    FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY Q
    WHERE '2022-10-16' BETWEEN DATE_FORMAT(Q.START_DATE,'%Y-%m-%d') AND DATE_FORMAT(Q.END_DATE,'%Y-%m-%d')
) A
ON E.CAR_ID = A.CAR_ID
GROUP BY E.CAR_ID
ORDER BY E.CAR_ID DESC

+ Recent posts