CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서
2022년 10월 16일에 대여 중인 자동차인 경우 '대여중' 이라고 표시하고,
대여 중이지 않은 자동차인 경우 '대여 가능'을 표시하는 컬럼(컬럼명: AVAILABILITY)을 추가하여
자동차 ID와 AVAILABILITY 리스트를 출력하는 SQL문을 작성해주세요.
이때 반납 날짜가 2022년 10월 16일인 경우에도 '대여중'으로 표시해주시고
결과는 자동차 ID를 기준으로 내림차순 정렬해주세요.
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 AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC
문제 분류는 GROUP BY 문제였는데, 거의 CASE WHEN ~ THEN ~ END 문제였다.
CASE문은
CASE WHEN 조건문1 THEN '값1'
WHEN 조건문2 THEN '값2'
ELSE '값3'
END
CASE문은 반드시 END로 끝내야 한다.
이 방법 말고도 IF문을 사용할 수도 있는 것 같다.
IF(조건문, TRUE일 때 값, FALSE일 때 값)
IFNULL로 NULL일 때 대체할 값을 넣을 수 있다.
IFNULL(컬럼, NULL일 때 대체할 값)