
문제
https://school.programmers.co.kr/learn/courses/30/lessons/157342
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 설명
- CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문을 작성
- 평균 대여 기간은 소수점 두번째 자리에서 반올림
- 결과는 평균 대여 기간을 기준으로 내림차순 정렬, 평균 대여 기간이 같으면 자동차 ID를 기준으로 내림차순 정렬
정답 코드
SELECT CAR_ID,
ROUND(AVG(DATEDIFF(END_DATE, START_DATE)+1), 1) AS AVERAGE_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
HAVING AVERAGE_DURATION >= 7
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC
- 참고) HAVING AVERAGE_DURATION >= 7 은 MySQL에선 작동하지만, 일부 DBMS에서는 별칭 사용이 허용되지 않음
- HAVING AVG(DATEDIFF(END_DATE, START_DATE) + 1) >= 7 사용
코드 설명 (개선 포함)
SELECT CAR_ID,
ROUND(AVG(DATEDIFF(END_DATE, START_DATE) + 1), 1) AS AVERAGE_DURATION # 평균 대여 기간(시작~종료일 포함) 계산 후 반올림
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID # 자동차별로 그룹화
HAVING AVG(DATEDIFF(END_DATE, START_DATE) + 1) >= 7 # 평균 대여 기간이 7일 이상인 자동차만 필터링
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC
첫 번째 시도 (실패)
SELECT CAR_ID,
ROUND(AVG(DATEDIFF(END_DATE, START_DATE)+1),1) AS AVERAGE_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC
- 평균 대여 기간이 7일 이상인 자동차만 출력하는거 잊음
'코딩 테스트 연습 > [프로그래머스][리트코드] MySQL' 카테고리의 다른 글
| [LV.4] 우유와 요거트가 담긴 장바구니 (0) | 2025.07.04 |
|---|---|
| [LV.4] 헤비 유저가 소유한 장소 (0) | 2025.07.03 |
| [LV.4] String, Date > 자동차 대여 기록에서 장기/단기 대여 구분하기 (1) | 2025.07.01 |
| [LV.4] SELECT > 서울에 위치한 식당 목록 출력하기 (1) | 2025.06.30 |
| [LV.4] GROUP BY > 년, 월, 성별 별 상품 구매 회원 수 구하기 (0) | 2025.06.27 |