미소를뿌리는감자의 코딩
[프로그래머스 2024/01/26] 자동차 평균 대여 기간 구하기 본문
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/157342
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 접근 방법
우선, DATEDIFF 함수를 이용해서, 대여기간을 구해주었다.
SELECT CAR_ID, DATEDIFF(END_DATE, START_DATE)+1 as p from CAR_RENTAL_COMPANY_RENTAL_HISTORY
여기서 +1을 해주었다.
왜냐?!
2020-09-27이 start_date
2020-09-28이 end_date 라고 해보자.
DATEDIFF 함수에서는 1을 돌려줄 것이지만, 실제 대여기간은 2일이기 때문에, +1을 해주었다.
이후 CAR_ID로 묶어주었고,
이를 다시 select 문에 넣고, average 가 7이상인 것들만 출력되도록 where문은 사용했다.
너무 코드가 select from 문이 많은 것 같기도 한데
그래서 다시 적어보았다.
위 코드를 하나로 뭉쳐서 아래처럼 만들었다. +
HAVING : 그룹화된 결과에 대한 조건을 적용하고자 할 때 사용된다.
having 대신에 where을 사용한다면 error가 발생한다.
따라서, 그룹화된 이후 조건을 걸고 싶다면, having을 사용한다.
2. 코드
SELECT b.CAR_ID, round(b.average, 1) as AVERAGE_DURATION from (
SELECT CAR_ID, avg(a.p) as average from (
SELECT CAR_ID, DATEDIFF(END_DATE, START_DATE)+1 as p from
CAR_RENTAL_COMPANY_RENTAL_HISTORY) a
group by CAR_ID) b
where b.average >=7
order by round(b.average, 1) desc, b.CAR_ID desc
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
728x90
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 2024/01/26] 가격대 별 상품 개수 구하기 (0) | 2024.01.26 |
---|---|
[프로그래머스 2024/01/26] 재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2024.01.26 |
[프로그래머스 2024/01/26] 과일로 만든 아이스크림 고르기 (0) | 2024.01.26 |
[프로그래머스 2024/01/26] 자동차 대여 기록에서 장기/단개 대여 구분하기 (0) | 2024.01.26 |
[프로그래머스 2024/01/26] 조건에 부합하는 중고거래 댓글 조회하기 (0) | 2024.01.26 |