한 걸음씩
[프로그래머스][MySQL] 자동차 평균 대여 기간 구하기 본문
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 AVG(DATEDIFF(END_DATE, START_DATE) + 1) >= 7
# 대여 기간을 구하려면 +1해줘야하는 이유 : 9일날 빌려서 9일날 반납했다고 가정하면 1일동안 렌트한셈이니까
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC;
전체 코드 해석 ▼
CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서
CAR_ID 칼럼을 그룹화하고
END_DATE에서 START_DATE를 뺀 값에 + 1을 한 다음 평균을 낸 값이 7 이상인 경우
CAR_ID, AVERAGE_DURATION 칼럼을 출력하는데
AVERAGE_DURATION 기준으로 내림차순하고, 동일한 데이터가 있을 경우 CAR_ID 기준으로 내림차순으로 정렬해 줘
✅ 체크 포인트
► DATEDIFF 함수
# 날짜1 - 날짜2
DATEDIFF(날짜1, 날짜2);
► TIMESTAMPDIFF 함수
# 날짜1 - 날짜2 = 해당하는 단위로 값을 표시
TIMESTAMPDIFF(단위, 날짜1, 날짜2)
단위 | 설명 |
SECOND | 초 |
MINUTE | 분 |
HOUR | 시 |
DAY | 일 |
WEEK | 주 |
MONTH | 월 |
QUARTER | 분기 |
YEAR | 연 |
'Programmers' 카테고리의 다른 글
[프로그래머스][JS] 몫 구하기 (0) | 2023.04.03 |
---|---|
[프로그래머스][python] 문자 반복 출력하기 (0) | 2023.02.23 |
[프로그래머스][MySQL] 재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2023.02.21 |
[프로그래머스][MySQL] 가격대 별 상품 개수 구하기 (0) | 2023.02.21 |
[프로그래머스][MySQL] 상품 별 오프라인 매출 구하기 (0) | 2023.02.21 |