문제
문제 풀이
해당 문제에서 는 CASE 문을 사용해 컬럼값 데이터에 따른 조건을 걸어 값을 추출하는게 핵심인거 같다.
먼저 CASE 문에 대해 간단하게 설명하면 WHEN 다음에 조건을 걸고, THEN 이후에 해당 조건에 따른 반환값을 넣어준다.
만약 모든 조건이 충족되지 않을 경우의 반환값은 ELSE 뒤에 넣고 꼭! 마지막에 END를 넣어줘야 비로소 CASE문이 종료된다.
CASE WHEN 조건식 THEN 반환값
WHEN 조건식2 THEN 반환값2
ELSE 조건이 만족하지 않을 경우 반환값
END
자 그럼이제 한번 CASE문을 적용해 해당 문제를 풀어보자
정답 쿼리
CASE 조건문에 서브 쿼리를 사용해 2022-10-16일에 포함된 CAR를 모두찾아 IN 절로 비교해 CAR가 해당 날짜에 포함되면 '대여중' ELSE 인 경우 '대여 가능'으로 추출되게끔 구현하면 된다.
SELECT CAR_ID,
CASE WHEN CAR IN(SELECT CAR_ID FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE '2022-10-16' BETWEEN START_DATE AND END_DATE)
THEN '대여중'
ELSE '대여 가능'
END AS 'AVAILABILITY'
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC
'알고리즘 > SQL' 카테고리의 다른 글
[SQL] 다양한 SQL 함수 (0) | 2024.01.06 |
---|---|
[SQL] 즐겨찾기가 가장 많은 식당 정보 출력하기 (0) | 2023.12.30 |
[SQL] 상품 별 오프라인 매출 구하기 (0) | 2023.12.29 |
[SQL] 재구매가 일어난 상품과 회원 리스트 구하기 (1) | 2023.12.28 |
[SQL] 평균 일일 대여 요금 구하기 (0) | 2023.12.28 |