참치코더의 꿈 메모장

Oracle / 프로그래머스 - 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 본문

Oracle

Oracle / 프로그래머스 - 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기

참치깡 2026. 2. 3. 16:20
728x90

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT CAR_ID, CASE
    WHEN MAX(
        CASE
            WHEN START_DATE <= DATE '2022-10-16'
            AND END_DATE >= DATE '2022-10-16'
            THEN 1 ELSE 0
            END
    ) = 1
    THEN '대여중'
    ELSE '대여 가능'
    END AS AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC;
cs

 

 

- CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 2022년 10월 16일에 대여 중인 자동차의 경우

  '대여중' 이라고 표시하고, 대여 중이지 않은 자동차의 경우 '대여 가능'을 표시하는 컬럼을 추가하여 자동차 ID와

 AVAILABILITY 리스트를 출력하는 SQL문을 작성하는 문제이다.

 

- 일단 참조하려고 하는 데이터가 있는 테이블인 CAR_RENTAL_COMPANY_RENTAL_HISTORY를 from절에 두고

  car_id를 group by로 묶어서 값을 구할 수 있도록 한다. 

- 다음 select 문에 car_id, case when then end 문을 사용하여 조건을 주어서 일단 안쪽 case 문에 date값이 2022-10-16

  인 데이터 값들은 값을 1 나머지는 0을 주도록 만들었다.

 

- 해당 데이터를 바깥 case문으로 1인지 비교하며 만약 값이 1과 같다면 대여중으로 표시하고, 아니라면 대여가능으로 

  표시하여 값을 얻을 수 있다.

 

- 마지막으로 CAR_ID 값으로 내림차순 정렬한다면 정답을 얻을 수 있다. 

 

실행 결과 일부 내용 발췌

728x90
Comments