[SQL] 자동차 평균 대여 기간 구하기(프로그래머스)
2024. 4. 30. 23:04ㆍ코딩 테스트
문제


개념
- DATEDIFF(시작일자, 종료일자) : 시작일자와 종료일자의 일 차이
- DATEDIFF(DAY,...), DATEDIFF(MONTH,...), DATEDIFF(YEAR,...)
- AVG() ... GROUP BY ... : 각 그룹의 평균
- ROUND(값, 자리수) : 반올림하여 해당 소수점 자리까지 출력
- -1 : 정수 첫째자리를 반올림
- 당일 대여하여 당일 반납하여도 대여 기간이 1일이기 때문에 DATEDIFF에서 +1을 하였다.
- HAVING과 WHERE의 차이
- Having절은 WHERE절과 비슷하지만 그룹 전체 즉, 그룹을 나타내는 결과 집합의 행에만 적용된다
- 반면 WHERE절은 개별 행에 적용이 된다.
- having절은 그룹을 필터링하는 데 사용된다.
- where절을 행을 필터링 하는데 사용된다.
- having 절은 Group By 절 뒤에 사용합니다.
- Where 절은 Group By 절 앞에 사용합니다.
- 집계 함수는 having 절과 함께 사용할 수 있다.
- where절을 have절에 포함된 하위 쿼리에 있지않으면 집계함수와 함께 사용할 수 없다.(집계함수란, COUNT, MIN, MAX, SUM, AVG등등이 있다.)
- having은 SQL select문이 집계 값이 지정된 조건을 충족하는 행만 반환하도록 지정하는 SQL절이다.
- where은 단일 테이블에서 데이터를 가져 오거나 여러 테이블과 결합하여 조건을 지정하는데 사용되는 SQL절이다.
정답
SELECT
CAR_ID,
ROUND(AVG(DATEDIFF(END_DATE,START_DATE) + 1), 1) AS AVERAGE_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY 1
HAVING AVG(DATEDIFF(END_DATE,START_DATE) + 1) >= 7
ORDER BY 2 DESC, 1 DESC'코딩 테스트' 카테고리의 다른 글
| [SQL] 서울에 위치한 식당 목록 출력하기(프로그래머스) (0) | 2024.04.30 |
|---|---|
| [SQL] 부서별 평균 연봉 조회하기(프로그래머스) (0) | 2024.04.30 |
| [SQL] 식품분류별 가장 비싼 식품의 정보 조회하기(프로그래머스) (0) | 2024.04.30 |
| [SQL] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기(프로그래머스) (0) | 2024.04.30 |
| [SQL] 재구매가 일어난 상품과 회원 리스트 구하기(프로그래머스) (1) | 2024.04.26 |