본문 바로가기
코딩테스트/programming_SQL

[SQL] 프로그래머스_자동차 평균 대여 기간 구하기_157342

by prometedor 2023. 10. 3.

GROUP BY ~ HAVING, ROUND, AVG, DATEDIFF 이용하기

ROUND(반올림 할 컬럼, 소수점 자리수)
=> ex) 10.1234 -> 10.1 로 반올림할 경우
       ROUND(10.1234, 1)
       반올림 할 컬럼 이름이 num 이라면,
       ROUND(num, 1)

AVG(평균을 구할 컬럼)
=> ex) num 이라는 컬럼의 평균을 구하려면 
	   AVG(num)
       
DATEDIFF(종료일 컬럼, 시작일 컬럼) + 1
=> ex) DATEDIFF(END_DATE, START_DATE) + 1
      -> 기간을 구할 경우 시작 일을 포함하기 위해 1을 더해줌
      
GROUP BY ~ HAVING
=> HAVING 절은 WHERE 절과 비슷하지만 그룹 전체 즉, 그룹을 나타내는 결과 집합의 행에만 적용됨
   반면, WHERE 절은 개별 행에 적용됨

 

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

 

프로그래머스

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

programmers.co.kr

 

 

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;