무려 1시간 동안 고민하다고 결국 납득 못해서 답보고 답봐도 납득 못하고 1시간동안 다시 고민
SELECT CAR_ID,
CASE
WHEN DATE_FORMAT(START_DATE, "%Y-%m-%d") <= '2022-10-16'
AND DATE_FORMAT(END_DATE, "%Y-%m-%d") >= '2022-10-16' THEN '대여중'
ELSE '대여 가능'
END AS AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC;
casem when 으로 그 구건 안에 있을때만 대여중을 주고 아닐때는 대여가능을 줬다
근데 틀려서 계속 뭐가 틀린건지 보고 결국 모르겠어서 답 봤는데
SELECT
CAR_ID,
CASE WHEN CAR_ID IN (
SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE <= "2022-10-16" AND END_DATE >= "2022-10-16"
GROUP BY CAR_ID
) THEN "대여중"
ELSE "대여 가능"
END AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC
이래서 왜 car_id가 왜 들어가야 하지? 계속 그 생각 하고 있었는데 생각해보니
이게 여러개 중 여기에 해당 하는게 있으면 대여 중인거고 아니면 대여가능 인건데
나처럼 하면 대여중인데 대여가능이 있으면 대여가능으로 뜰 수도 있을거 같다는 생각이 들었다
그렇게 생각하고 다시 보니 위를 보니
그룹 해 놓고 이 범위 안에 들어오는게 대여중인 카 아이디 있으면 대여중으로 하고 아니면 대여가능으로 한다는걸 알게 됐다
근데 다음에도 이렇게 나오면 잘 못할거 같다ㅜㅜㅜ

이래서 안나왔구나 이거에 대해서 뭐가 나올지 설정을 해줘야 했다
having은 이 그룹이 묶이는 조건을 설정(완전 where문과 같음)
그래서 여기서 그룹화 된것중에 어떤게 나올지 in으로 선택을 해줘야 했던거네
이 문제도 보면 2개 이상인 애들만 뽑는거라서 group by 해주고 having으로 2개 이상인 것만 가져왔는데 이거는 * 여서 뭐가 나오는지 몰라서 무작위로 선택된다

이래서 여기에서도 이런 호스트만 선택하기 위해 in연산자 사용
근데 여기서 다른점은 이건 예시를 보니 group by로 안묶고 having으로 못주고 in으로 줌