문제
https://school.programmers.co.kr/learn/courses/30/lessons/157342
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
쉽지 않았습니다.. 이유로는
1. 조건에 맞는 row가 여러개 있었고, 겹치는 대상이 되었음
2. date의 차이를 계산하는 법
3. 평균값을 소수점 2번째에서 반올림
을 어떻게 구현해야 할 지 몰랐기 때문입니다,,
해결방법
1. group by 와 having 을 이용해 조건에 맞는 쿼리 생성!
2. datediff(끝나는 date, 시작한 date) 가 바로 date 차이를 구하는 함수
3. round(계산하는 값, 1) 로 하면, 소수점 1의 자리까지 반올림 된 값을 구해줌!
정답
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
order by average_duration desc, car_id desc
'알고리즘 공부 > sql' 카테고리의 다른 글
[프로그래머스] MySQL - 입양시각 구하기(2) (0) | 2024.02.28 |
---|---|
[프로그래머스] MySQL - 식품 분류별 가장 비싼 식품의 정보 조회하기 (0) | 2024.02.23 |
[프로그래머스] MySQL - 조건에 맞는 사용자 정보 조회하기 (0) | 2024.02.22 |
[프로그래머스] MySQL - 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (0) | 2024.02.22 |
[프로그래머스] MySQL - 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2024.02.20 |