728x90
1. 문제
CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 2022년 10월 16일에 대여 중인 자동차인 경우 '대여중' 이라고 표시하고, 대여 중이지 않은 자동차인 경우 '대여 가능'을 표시하는 컬럼(컬럼명: AVAILABILITY)을 추가하여 자동차 ID와 AVAILABILITY 리스트를 출력하는 SQL문을 작성해주세요. 이때 반납 날짜가 2022년 10월 16일인 경우에도 '대여중'으로 표시해주시고 결과는 자동차 ID를 기준으로 내림차순 정렬해주세요.
2. 풀이
GROUP BY 내부정렬을 하지 않고 조회하기 위해 IF로 구한 값들 중 MAX값을 구한다.
2022-10-16 날짜가 START_DATE, END_DATE 사이에 있으면 '대여중'이 되는데,
'대여중' 글자는 '대여 가능'보다 크기 때문에 한 번이라도 '대여중'이 있다면 MAX에 의해 AVAILABILITY가 '대여중'이 된다.
SELECT CAR_ID, MAX(IF('2022-10-16' BETWEEN START_DATE AND END_DATE, '대여중', '대여 가능')) AS AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC
3. 결과
'코딩테스트 > SQL' 카테고리의 다른 글
[SQL] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 - MySQL (0) | 2023.04.17 |
---|---|
[SQL] 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 - MySQL (0) | 2023.04.17 |
[SQL] 취소되지 않은 진료예약 조회하기 - MySQL (0) | 2023.02.27 |
[SQL] 오프라인/온라인 판매 데이터 통합하기 - MySQL (0) | 2022.10.14 |
[SQL] DATETIME에서 DATE로 형 변환 - MYSQL (0) | 2022.05.06 |
댓글