데이터 놀이터
String, Date - 자동차 평균 대여 기간 구하기 본문
728x90
1. 문제
CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서
평균 대여 기간이 7일 이상인 자동차들의
자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문을 작성해주세요.
평균 대여 기간은 소수점 두번째 자리에서 반올림하고,
결과는 평균 대여 기간을 기준으로 내림차순 정렬해주시고, 평균 대여 기간이 같으면 자동차 ID를 기준으로 내림차순 정렬해주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/131114
2. 문제 조건
- 평균 대여 기간이 7일 이상인 자동차들 -> 자동차 ID로 GROUP_BY, 집계 후 조건이기 때문에 HAVING 활용
- 자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력 -> SELECT
- 평균 대여 기간은 소수점 두번째 자리에서 반올림 -> ROUND(~, 1)
- 평균 대여 기간을 기준으로 내림차순 정렬해주시고, 평균 대여 기간이 같으면 자동차 ID를 기준으로 내림차순 정렬 -> ORDER BY
3. 코드 작성
/*
1. 평균 대여 기간 7일 이상
2. 자동차 ID, 평균 대여 기간 출력
3. 평균 대여 기간 소수점 두번째 자리에서 반올림
4. 평균 대여 기간을 기준으로 내림차순 정렬, 자동차 ID를 기준으로 내림차순 정렬
*/
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;
4. 회고
- 반올림 조건을 잘 확인해야겠다. ~까지, ~에서
- 날짜 차이를 계산하기 위해서는 DATEDIFF함수를 사용해야한다.
- DATEDIFF(마지막 일, 첫번째 일) + 1
- 마지막에 + 1을 하는 걸 잊지 말자.
- 날짜 차이를 계산하는 함수에는 DATEDIFF 외에도 TIMESTAMPDIFF함수가 있다. 이 함수는 직접 차이를 계산하는 포멧(연, 월, 일...)을 정해주는게 가능하다.
- TIMESTAMPDIFF(포멧, 마지막 일, 첫번째 일) + 1
- 출처: https://extbrain.tistory.com/78
728x90
'SQL' 카테고리의 다른 글
String, Date - 자동차 대여 기록에서 장기/단기 대여 구분하기 (0) | 2023.08.24 |
---|---|
String, Date - 카테고리 별 상품 개수 구하기 (0) | 2023.08.22 |
IS NULL - 경기도에 위치한 식품창고 목록 출력하기 (0) | 2023.08.21 |
JOIN - 없어진 기록 찾기 (0) | 2023.08.18 |
SELECT - 12세 이하인 여자 환자 목록 출력하기 (0) | 2023.08.17 |