프로그래머스 SQL 고득점 킷 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기

hysss·2023년 2월 18일
0

GROUP BY - 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기

문제 분석

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일 때 대체할 값)
profile
매일 매일 규칙적으로

0개의 댓글