CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 2022년 10월 16일에 대여 중인 자동차인 경우 '대여중' 이라고 표시하고, 대여 중이지 않은 자동차인 경우 '대여 가능'을 표시하는 컬럼(컬럼명: AVAILABILITY)을 추가하여 자동차 ID와 AVAILABILITY 리스트를 출력하는 SQL문을 작성해주세요. 이때 반납 날짜가 2022년 10월 16일인 경우에도 '대여중'으로 표시해주시고 결과는 자동차 ID를 기준으로 내림차순 정렬해주세요.

case when price in (
select max(price)
from sales
group by id
)
then '최대가격'
else '최소가격'
end
case when 에 in 절을 사용할 수 있다.
약간 distinct 의 역할도 해주는 것이 group by 이다.
이해는 밑에 코드 참조...
car_id에 따른 available 값이 모두 같으면
ex)
1 대여중
1 대여중
2 대여가능
2 대여가능
이런식일 때 distinct 역할을 group by car_id 로 대신 가능하다.
쿼리의 if절에서 별칭 사용할때는 as를 붙이지 않는다.
그리고 별칭은 영어는 그냥 써도 되고, 한글은 꼭 큰따옴표 "" 를 사용한다!!!!!!!!!!!!
1. case when 에서
case when ~ then ~ else ~ end "date"
2. 그 외
max(price) as "max_price"
혹은
max(price) as max_price
select car_id, case when car_id in
(select car_id
from CAR_RENTAL_COMPANY_RENTAL_HISTORY
where '20221016' BETWEEN to_char(START_DATE, 'YYYYMMDD') AND to_char(END_DATE, 'YYYYMMDD')
)
then '대여중'
else '대여 가능' end "availability"
from CAR_RENTAL_COMPANY_RENTAL_HISTORY
group by car_id
order by 1 desc
-> 이것도 시간 오래걸리고 많이 틀렸는데, '대여 가능' 에서 띄어쓰기를 안해서 그런거였다; 문제 정확히 읽고 실수 하지 않기!