💡문제 풀이/프로그래머스 - Oracle

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

뇌 리셋은 기본이지 2024. 6. 26. 10:00

정보

분류 : GROUP BY

 

문제

문제링크

 

풀이

조       건
    1. 2022년 10월 16일에 대여 중인 자동차인 경우 '대여중' 이라고 표시
    2. 대여 중이지 않은 자동차인 경우 '대여 가능'을 표시
    3. 이때 반납 날짜가 2022년 10월 16일인 경우에도 '대여중'으로 표시

조회컬럼
   대여여부(AVAILABILITY), 자동차 ID

정렬조건
   자동차 ID를 기준으로 내림차순
SELECT DISTINCT A.CAR_ID
     , NVL(AVAILABILITY, '대여 가능')        AS "AVAILABILITY"
  FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY A
  LEFT JOIN (
              SELECT CAR_ID, '대여중'          AS "AVAILABILITY"
                FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
               WHERE '20221016' BETWEEN TO_CHAR(START_DATE,'YYYYMMDD') AND TO_CHAR(END_DATE,'YYYYMMDD')
            ) B
    ON A.CAR_ID = B.CAR_ID
 ORDER BY A.CAR_ID DESC

 

풀이 내용

AVAILABILITY

서브쿼리에 '대여중'으로 해당되는 결과값을 추출한 후 부모쿼리에서 부모 FROM절 기준으로 JOIN해주었다. 그럼 AVAILABILITY 컬럼에 대한 데이터가 NULL인 행이 존재하는데 이것은 NVL 함수를 사용하여 '대여 가능'으로 지정해주었다.

CAR_ID

GROUP BY 대신 DISTINCT를 사용해서 CAR_ID가 중복되면 행을 제거하는 작업을 해주었다.