250x250
Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

데이터 놀이터

String, Date - 자동차 평균 대여 기간 구하기 본문

SQL

String, Date - 자동차 평균 대여 기간 구하기

jjjk84 2023. 8. 22. 23:22
728x90

1. 문제

 

CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서

평균 대여 기간이 7일 이상인 자동차들의

자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문을 작성해주세요.

평균 대여 기간은 소수점 두번째 자리에서 반올림하고,

결과는 평균 대여 기간을 기준으로 내림차순 정렬해주시고, 평균 대여 기간이 같으면 자동차 ID를 기준으로 내림차순 정렬해주세요.

https://school.programmers.co.kr/learn/courses/30/lessons/131114

 

2. 문제 조건

 

  1. 평균 대여 기간이 7일 이상인 자동차들 -> 자동차 ID로 GROUP_BY, 집계 후 조건이기 때문에 HAVING 활용
  2. 자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력 -> SELECT
  3. 평균 대여 기간은 소수점 두번째 자리에서 반올림 -> ROUND(~, 1)
  4. 평균 대여 기간을 기준으로 내림차순 정렬해주시고, 평균 대여 기간이 같으면 자동차 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