[프로그래머스] SQL/오답 노트

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

SH3542 2024. 10. 5. 19:50

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

 

SELECT CAR_ID, IF(CAR_ID IN (SELECT DISTINCT CAR_ID
                             FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
                             WHERE END_DATE >= '2022-10-16'), '대여중', '대여 가능') AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC

 

문제를 잘못 해석했고,

데이터 결함이 없다면 (START_DATE > END_DATE인 경우) END_DATE만 비교하면 될 것이라 판단했다.

 

START_DATE가 16일을 넘어가는 케이스가 반례였다.

 

수정

SELECT CAR_ID, IF(CAR_ID IN (SELECT DISTINCT CAR_ID
                             FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
                             WHERE START_DATE <= '2022-10-16' AND END_DATE >= '2022-10-16'), '대여중', '대여 가능') AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC