MySQL 프로그래머스 | 자동차 평균 대여 기간 구하기 (DATEDIFF 함수 주의할 점, +1을 해줘야 하는 이유)

    728x90

     

    문제

    https://school.programmers.co.kr/learn/courses/30/lessons/157342#qna

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

    • 평균 대여 기간이 7일 이상인 자동차
    • 자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문 작성
    • 평균 대여 기간은 소수점 두번째 자리에서 반올림
    • 평균 대여 기간 기준 내림차순, 평균 대여 기간이 같으면 자동차 ID 기준으로 내림차순 정렬

     

    테이블

    CAR_RENTAL_COMPANY_RENTAL_HISTORY

     

    풀이과정

    평균 기간 차이를 구하기 위해서 DATEEDIFF(끝 날짜, 시작날짜) 함수를 사용

    이 때 주의할 점

    같은 날짜에 대한 DATEDIFF함수의 결과는 0이 나오기 때문에

    • DATEDIFF('2030-01-01', '2030-01-01') = 0 
      → 1월1일 하루를 세줘서 1이어야 함
    • DATEDIFF('2030-01-01', '2030-01-02') = 1
      → 1월1일과 2일을 세줘서 2여야 함

    시작일의 하루를 세주려면 +1을 해줘야 함 

    • DATEDIFF('2030-01-01', '2030-01-01') +1 = 1  (하루)
    • DATEDIFF('2030-01-01', '2030-01-02') +1 = 2 (이틀)

     

    # 정답

    1
    2
    3
    4
    5
    SELECT CAR_ID, ROUND(AVG(DATEDIFF(END_DATE, START_DATE)+1),1) AVERAGE_DURATION
    FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
    GROUP BY 1
    HAVING AVERAGE_DURATION >= 7
    ORDER BY 2 DESC, 1 DESC
    cs

    728x90

    댓글