MySQL 풀이.
틀렸던 코드
SELECT
CAR_ID,
IF("2022-10-16" BETWEEN START_DATE AND END_DATE,"대여중","대여 가능")
FROM
CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY
CAR_ID
ORDER BY 1 DESC
CAR_ID 기준으로 묶었기에 이렇게 하면 START_DATE랑 END_DATE가
다른 CAR_ID 마다 그냥 맨위 행에있는거 가져와서 쓰기때문에
정확한 답이 될 수 없었음.
정답코드 1
SELECT
CAR_ID,
MAX(IF("2022-10-16" BETWEEN START_DATE AND END_DATE,"대여중","대여 가능"))
FROM
CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY
CAR_ID
ORDER BY 1 DESC
집계함수 MAX 사용. CAR_ID의 날짜 모두 비교해봐서 해당 조건에 맞는 대여중이 하나라도 있다면 대여중 표시 하도록
MAX를 사용했다. 세번째 글자가 '중'과 ' ' 였기에 MAX 사용시 사전순으로 중이 더 크기때문에 가능한 풀이.
정답코드 2
SELECT
CAR_ID,
IF(CAR_ID IN (
SELECT
CAR_ID
FROM
CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE
"2022-10-16" BETWEEN START_DATE AND END_DATE
),"대여중","대여 가능")
FROM
CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY 1 DESC
조금더 일반적인 방식이다.
GROUP BY 와 함께 SELECT에 집계함수 아닌 함수 쓸때 실수 유의.
프로그래머스 상품을 구매한 회원 비율 구하기 (MYSQL) (0) | 2024.02.14 |
---|---|
프로그래머스 자동차 대여금액 문제들 (Mysql) (0) | 2024.02.14 |
프로그래머스 입양 시각 구하기(2) (MYSQL) (0) | 2024.02.13 |
프로그래머스 - 식품분류별 가장 비싼 식품의 정보 조회하기(MySQL) (0) | 2024.02.13 |