SQL 쿼리 연습/String, Date

[Lv.2 / 프로그래머스 / SQL] 자동차 평균 대여 기간 구하기

김세진 2023. 2. 28. 03:02
반응형

 

 

 

 

프로그래머스

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

programmers.co.kr

 

 

풀이 (MySQL)

 

대여 기간이 평균 7일 이상인 자동차의 ID와 그 평균 기간을 조회해야 한다.

DATE 타입의 두 날짜의 차이를 구해야 하므로 DATEDIFF 함수를 사용했다.

AVERAGE_DURATION이 7일 이상인 조건을 적어야 할 때, WHERE이 아닌 HAVING을 사용해야 함을 주의해야 한다.

관련 포스팅은 아래에 기재되어 있다.

 

 

[SQL] Select절에 별칭(AS) 사용 후 Where절 Unknown Column 발생 이유

에러 메시지 SQL 오류 (1054): Unknown column 'xxx' in 'where clause' 원인 한 마디로 요약하자면 Select절 이전에 Where절이 실행되기 때문이다. 작성 순서상에는 Select 다음에 Where 절이라 실제 실행 순서를 간

my-coding-notes.tistory.com

 

주의해야 할 것은, 당일에 빌려 당일 반환한 것도 하루로 치므로 대여 기간을 구할 때 +1을 해야 한다는 점이다.

 

SELECT
    CAR_ID
    , ROUND(SUM(DATEDIFF(END_DATE, START_DATE)) / COUNT(HISTORY_ID),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

 

 

 

반응형