
안녕하세요 !
벌써 목요일이네용
근데 요즘 저만 눈이 그렇게 아픈가요 ..?
창문을 열어두고 지내기는한데
꽃가루가 다 안 지나갔나...
눈이 너무 아프네요 😳
그치만
인생은 짧고 열심히해라
특정 기간동안 대여 가능한 자동차들의 대여비용 구하기
CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블에서 자동차 종류가 '세단' 또는 'SUV' 인 자동차 중 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능하고 30일간의 대여 금액이 50만원 이상 200만원 미만인 자동차에 대한
자동차 ID, 자동차 종류, 대여 금액(컬럼명: FEE) 리스트를 출력해주세요.
결과는 대여 금액을 기준으로 내림차순 정렬하고, 대여 금액이 같은 경우 자동차 종류를 기준으로 오름차순 정렬, 자동차 종류까지 같은 경우 자동차 ID를 기준으로 내림차순 정렬해주세요.
테이블이 3개나 되네요 ,,,
자동차 종류
특정일자
특정금액
까지 총 3개의 조건까지 줘야해요,,
하나하나 코드 따져서 봐볼게요
출력예시)
CAR_ID CAR_TYPE FEE
5 세단 690000
1 SUV 621000
SELECT CAR_ID,
CAR_TYPE,
FEE
출력예시처럼 SELECT는 3개를 출력해야하고요
FROM 봐볼게요
FROM
CAR_RENTAL_COMPANY_CAR as c LEFT JOIN
CAR_RENTAL_COMPANY_RENTAL_HISTORY as h ON c.CAR_ID=h.CAR_ID LEFT JOIN
CAR_RENTAL_COMPANY_DISCOUNT_PLAN as d ON h.CAR_ID=d.PLAN_ID
이렇게 레프트 조인으로 하나하나 씩 해서
테이블 3개를 각각 조인 시켜줬어요
WHERE DURATION_TYPE = '30일 이상' >> 대여기간 추출
and c.CAR_TYPE IN ('세단', 'SUV') >> 자동차 종류 추출
and ROUND(c.DAILY_FEE * (100 - d.DISCOUNT_RATE) / 100 * 30, 0) between 500000 and 2000000
>> 30일간의 대여 금액이 50만원 이상 200만원 미만인 자동차만 추출
GROUP BY 1
HAVING MAX(h.END_DATE) < '2022-11-01'
>> 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능한 자동차
대여 종료일 (최댓값)이 11월 1일 보다 작은 날짜
11월 1일 이전에 모든 대여가 끝난 자동차를 찾는 데 사용
ORDER BY 3 desc, 2, 1 desc
>> 대여 금액 내림차순 정렬 - 자동차 종류 오름차순 정렬 - 자동차 ID 내림차순 정렬
ROUND는 똑같이 select 출력 시에도 필요하기 때문에
그대로 select문에 가져오고 as로 별칭을 FEE라고 붙여주면 됩니다 !

이렇게 출력해주시면 정답처리 완료 🍀
대여금액을 정수처리하라고 해서
저는 ROUND 함수를 썼는데
CAST 함수를 사용할 수도 있습니다 !
SELECT c.CAR_ID,
c.CAR_TYPE,
CAST(c.DAILY_FEE * (100 - d.DISCOUNT_RATE) / 100 * 30 AS SINGED) as FEE
FROM CAR_RENTAL_COMPANY_CAR as c LEFT JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY as h ON c.CAR_ID=h.CAR_ID LEFT JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN as d ON c.CAR_TYPE=d.CAR_TYPE
WHERE DURATION_TYPE = '30일 이상' and c.CAR_TYPE IN ('세단', 'SUV')
CAST(c.DAILY_FEE * (100 - d.DISCOUNT_RATE) / 100 * 30 AS SINGED) BETWEEN 500000 and 2000000
GROUP BY 1
HAVING MAX(h.END_DATE) < '2022-11-01'
ORDER BY 3 desc, 2, 1 desc
cast : 데이터의 형변환 사용
signed : 문자열을 정수값으로 형변환하는데 사용 / 음수, 양수 구분 가능
참고 링크 : https://kkh0977.tistory.com/1114
위에서 제가 정수처리를 하지 않는다면 ..?

다 하라는대로 하는 이유가 있습니다
이렇게 오늘은 오랜만에 SQL 코드 풀이를 올려보았구요
사람이 하던 걸 안 하면 이렇게 퇴화합니다..
분명 내가 썼는데
뭐라 썼는지 한 번에 안 보이네요 ,,
통계학 강의를 내일 오전 안으로 다 완강할 것 같은데
사실 진짜 ...
이해가 정말 .... 그동안 했던 것들에 비해 제곱 곱하기 제곱 수준으로
이해가 안됩니다.....
상당히 절망적이지만,,
내일 그만큼 통계학만 집중하는 시간을 가져보겠습니다 !!
휴우💨 고생 많으셨습니다 오늘도