Today I Learned

[내일배움캠프_데이터분석] 7주차 금요일 TIL _ SQL 문제해결

journal201 2024. 8. 9. 19:57

A. 금일 학습 내용

- 작일 풀지 못한 SQL 문제를 풀었다.

- 동일한 차가 여러 번 대여되었을 가능성을 고려하지 않았다.

- 이를 피하기 위해 서브쿼리를 사용하여 조건에 맞는 기간을 지정하였다.

SELECT 
    C.CAR_ID,
    C.CAR_TYPE,
    FLOOR((C.DAILY_FEE * (1 - P.DISCOUNT_RATE / 100)) * 30) AS FEE
FROM 
    CAR_RENTAL_COMPANY_CAR C
JOIN 
    CAR_RENTAL_COMPANY_DISCOUNT_PLAN P ON C.CAR_TYPE = P.CAR_TYPE
WHERE 
    C.CAR_TYPE IN ('세단', 'SUV')
    AND P.DURATION_TYPE = '30일 이상'
    AND NOT EXISTS (
        SELECT CAR_ID
        FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY H
        WHERE H.CAR_ID = C.CAR_ID
        AND (
            (H.START_DATE <= '2022-11-30' AND H.END_DATE >= '2022-11-01')
        )
    )
HAVING 
    FEE >= 500000 AND FEE < 2000000
ORDER BY 
    FEE DESC,
    C.CAR_TYPE ASC,
    C.CAR_ID DESC

 

- CAR_ID 가 중복되어 출력되는 것은 왜 해결되었는지 모르겠다.

 

B. 마무리

- 논리적 흐름을 완전히 파악하고 코드를 작성한 것이 아니라 마무리가 찝찝하다. 

- 문제가 풀렸다고 넘어가지 말고 이 부분은 꼭 여쭈어야겠다.