SQL 고득점 Kit - 8.30

김동현·2024년 9월 2일

SQL 고득점 Kit

목록 보기
43/56

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

문제

CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문을 작성해주세요. 평균 대여 기간은 소수점 두번째 자리에서 반올림하고, 결과는 평균 대여 기간을 기준으로 내림차순 정렬해주시고, 평균 대여 기간이 같으면 자동차 ID를 기준으로 내림차순 정렬해주세요.

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

풀이

SELECT 
    CAR_ID, 
    ROUND(AVG(DATEDIFF(END_DATE, START_DATE)+1), 1) AVERAGE_DURATION
    -- +1을 하는 이유, 문제를 보면 9.5 - 9.5을 1일로 보았다 그러면 9.6이라면 2일로 본다.
    -- 하지만 DATEDIFF는 같은 날짜의 연산은 0으로 본다. 
FROM 
    CAR_RENTAL_COMPANY_RENTAL_HISTORY 
GROUP BY 
    CAR_ID
HAVING 
    AVERAGE_DURATION >= 7
ORDER BY 
    AVERAGE_DURATION DESC, CAR_ID DESC

리뷰

  • 문제를 제대로 읽고, 예시 풀이도 확인하고, 출력 결과도 한 번 더 확인하는 것이 중요하다는 것을 알게 해준 문제이다.
  • DATEDIFF를 사용하면 당일 날짜는 0으로 계산이 되는 것을 몰랐던 나는 그냥 제출하고 계속 문제를 틀렸다.
  • 예시 문제 풀이를 보고 당일 날짜에 1을 더하는 풀이와 나의 연산 결과를 비교하니 틀린 것을 알 수 있었고 +1을 해서 조건을 맞춰주니 풀 수 있었다.
  • 요즘 쉽게? 문제를 풀어서 첫 SQL를 풀 때보다 훨씬 빠르게 문제를 읽고 쿼리를 작성하다보니 이런 부분을 놓치는 것 같다.

GitHub

자동차 평균 대여 기간 구하기
https://github.com/lasentia/SQL_Study/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/157342.%E2%80%85%EC%9E%90%EB%8F%99%EC%B0%A8%E2%80%85%ED%8F%89%EA%B7%A0%E2%80%85%EB%8C%80%EC%97%AC%E2%80%85%EA%B8%B0%EA%B0%84%E2%80%85%EA%B5%AC%ED%95%98%EA%B8%B0

profile
'The best way to get started is to quit talking and begin doing.'

0개의 댓글