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(sum(timestampdiff(day, start_date, end_date)) / count(*), 1) as AVERAGE_DURATION
from
CAR_RENTAL_COMPANY_RENTAL_HISTORY
where
timestampdiff(day, start_date, end_date) >= 7
group by
car_id
order by
AVERAGE_DURATION desc, car_id desc
문제 예제에선, 대여 기간 5일, 30일, 33일에 대한 자동차의 평균을 내서 조회를 했지만, 나의 코드같은 경우에는 대여 기간이 7일이 넘는 것들만 필터링을 했기 때문에 30일, 33일에 대한 평균만 내고 있었다.
정답 코드
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
ORDER BY
AVERAGE_DURATION desc,
car_id desc
DATEDIFF를 사용하여 끝나는 날짜 - 시작날짜 + 1을 해줘서 정확하게 계산해주었다. (기간 차이를 구할때는 DATEDIFF를 써야겠다)
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 지게차와 크레인 (0) | 2025.02.25 |
---|---|
조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (1) | 2024.12.30 |
즐겨찾기가 가장 많은 식당 정보 출력하기 (3) | 2024.12.26 |
SQL (1) | 2024.12.23 |
[프로그래머스] Lv.3 징검다리 건너기 (1) | 2024.09.26 |