자동차 평균 대여 기간 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/157342
- 문제 풀이
- 대여 기간을 계산하여 중첩 쿼리를 사용해 평균 대여 기간이 7일 이상인 자동차들을 구한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
SELECT CAR_ID, ROUND(AVG(DURATION), 1) AS AVERAGE_DURATION FROM ( SELECT CAR_ID, ROUND((END_DATE - START_DATE), 1) AS DURATION FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY ) DurationTable GROUP BY CAR_ID HAVING AVG(DURATION) >= 7 ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
SELECT CAR_ID, ROUND(AVG, 1) AS "AVERAGE_DURATION" FROM ( SELECT CAR_ID, AVG(NVL(END_DATE - START_DATE + 1, 0)) AS "AVG" FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY GROUP BY CAR_ID ) WHERE AVG >= 7 ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC;
- 중첩 쿼리를 사용하지 않고 직접
HAVING
구문에서 평균 대여 기간이 7일 이상인 것을 필터링NVL
함수를 사용하여NULL
값을 0으로 변환
1 2 3 4 5 6 7 8 9 10 11 12
SELECT CAR_ID, ROUND(AVG(NVL(END_DATE - START_DATE + 1, 0)), 1) AS AVERAGE_DURATION FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY GROUP BY CAR_ID HAVING AVG(NVL(END_DATE - START_DATE + 1, 0)) >= 7 ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC;
- 실행 결과
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.