문제를 보고 쉽겠는데 생각했다 코 깨졌다...
처음에
CASE YEAR(END_DATE) < '2022' && MONTH (END_DATE) < '10' && DAY(END_DATE) < '16')
|| CASE YEAR( START_DATE ) > '2022' && MONTH (START_DATE) > '10' && DAY( START_DATE ) > '16')
~~~~~
THEN '대여중'
ELSE '대여 가능'
END AS 'AVAILABILITY'
이런 식으로 모든 경우를 다 적을 생각이었다...
결국 못 풀고 다른 사람의 코드를 보니,
CASE
WHEN MAX('2022-10-16' BETWEEN START_DATE AND END_DATE) THEN '대여중'
ELSE '대여 가능'
END AS 'AVAILABILITY'
으로 BETWEEN 함수로 간략하게 표현할 수 있었다!!!
BETWEEN 함수는 TRUE, FALSE를 반환하는데
여기에 MAX('2022-10-16' BETWEEN START_DATE AND END_DATE)로 사용하는 이유는,
TRUE = 1, FALSE = 0으로
같은 자동차에 대한 대여 날짜가 하나라도 TRUE가 있으면,
1 > 0 기 때문에 무조건 '대여중'을 띄워주기 때문이었다!!!
(이거 이해할려고 30분 넘게 생각함 ㅋㅋㅋㅋㅋㅋ)
제출한 코드 :
SELECT CAR_ID,
CASE
WHEN MAX('2022-10-16' BETWEEN START_DATE AND END_DATE) THEN '대여중'
ELSE '대여 가능'
END AS 'AVAILABILITY'
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC
'SQL 문제' 카테고리의 다른 글
문제 61. 서울에 위치한 식당 목록(난이도 5) (0) | 2024.07.30 |
---|---|
문제 60. 년, 월, 성별 별 상품 구매 회원 수 구하기(난이도 7) (0) | 2024.07.30 |
문제 58. 취소되지 않은 진료 예약 조회하기(난이도 7)(3중 JOIN) (0) | 2024.07.26 |
문제 57. 조건에 부합하는 중고거래(난이도 1) (0) | 2024.07.26 |
문제 56. 특정 옵션이 포함된 자동차(난이도 1) (0) | 2024.07.26 |