코딩테스트/programming_SQL
[SQL] 프로그래머스_자동차 평균 대여 기간 구하기_157342
prometedor
2023. 10. 3. 17:31
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;