정보
분류 : 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가 중복되면 행을 제거하는 작업을 해주었다.
'💡문제 풀이 > 프로그래머스 - Oracle' 카테고리의 다른 글
조건에 맞는 사용자와 총 거래금액 조회하기 / 164668 (0) | 2024.06.26 |
---|---|
대여 기록이 존재하는 자동차 리스트 구하기 / 157341 (0) | 2024.06.26 |
대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 / 151139 (0) | 2024.06.26 |
카테고리 별 도서 판매량 집계하기 / 144855 (0) | 2024.06.26 |
즐겨찾기가 가장 많은 식당 정보 출력하기 / 131123 (0) | 2024.06.25 |