문제
https://school.programmers.co.kr/learn/courses/30/lessons/157340
접근방법
어려워서 gpt와 gemini에게 물어봤다. gemini 코드가 좀 더 다양한 케이스에 적용 가능해 보인다.
코드 (from gemini)
SELECT
car_id,
CASE
WHEN EXISTS (
SELECT *
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY h2
WHERE h2.car_id = h.car_id
AND h2.start_date <= '2022-10-16'
AND (
h2.end_date >= '2022-10-16'
OR h2.end_date IS NULL
)
) THEN '대여중'
ELSE '대여 가능'
END AS availability
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY h
group by car_id
ORDER BY car_id DESC;
코드 (from chatGpt)
SELECT CAR_ID,
MAX(CASE
WHEN START_DATE <= '2022-10-16' AND END_DATE >= '2022-10-16' THEN '대여중'
ELSE '대여 가능'
END) AS AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC;
개선할 점
column을 추가할 때,
대여중과 대여 가능을 구별하기 위해서.
select문 안에 case문을 넣어서 해결하면 된다는 걸 알았다.
유용하게 쓰일 거 같다.
'코딩테스트 준비 > SQL문법' 카테고리의 다른 글
[프로그래머스 LV3] - 조건에 맞는 사용자 정보 조회하기(string, date) SQL (0) | 2024.02.18 |
---|---|
[프로그래머스 LV5] - 상품을 구매한 회원 비율 구하기(join) SQL (0) | 2024.02.17 |
[프로그래머스 LV4] - 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기(join) SQL (0) | 2024.02.17 |
[프로그래머스] - 자동차 대여 기록에서 장기/단기 대여 구분하기 SQL - String, Date (0) | 2024.02.16 |
[프로그래머스] - 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (group by) SQL (0) | 2024.02.15 |