내일부터 예전에 처음으로 같이 본 프로젝트를 했던 팀원들과 코드 리뷰 스터디를 하기로 했다! 내 실력으로 잘할 수 있으려나 모르겠지만 노력하는 게 중요하니까! 노력해봐야지~ 내일부터는 오전에 코드 카타도 다시 제대로 시간 잡고 풀고 싶은데 가능할까..? 요 며칠 조금씩 밀리더니, 밀리고 나니까 괜스레 하기 싫은 기분이라..ㅎㅎ
문제 : CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문을 작성해주세요. 평균 대여 기간은 소수점 두번째 자리에서 반올림하고, 결과는 평균 대여 기간을 기준으로 내림차순 정렬해주시고, 평균 대여 기간이 같으면 자동차 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
DATEDIFF(END_DATE, START_DATE) + 1는 두 날짜 사이의 기간을 일(day) 단위로 계산하는 SQL 구문입니다.
DATEDIFF(END_DATE, START_DATE):
DATEDIFF 함수는 두 날짜 사이의 차이를 일(day) 단위로 반환합니다.
여기서 END_DATE는 렌탈 종료 날짜이고 START_DATE는 렌탈 시작 날짜입니다.
이 함수는 END_DATE와 START_DATE 간의 일수를 계산합니다. 예를 들어, END_DATE가 2024-06-10이고 START_DATE가 2024-06-01이라면, DATEDIFF(END_DATE, START_DATE)는 9를 반환합니다.
DATEDIFF 함수가 계산한 일수에 1을 더합니다.이는 렌탈 기간을 실제 일수로 계산하기 위함입니다. 예를 들어, 자동차를 2024-06-01에 빌려 2024-06-01에 반환했다면, DATEDIFF(2024-06-01, 2024-06-01)는 0을 반환하지만, 실제로는 1일 동안 빌린 것이므로 +1을 해서 1일로 계산합니다.
이 구문은 모든 렌탈 기간을 실제 빌린 일수로 정확하게 계산하기 위한 것입니다. 예를 들어, 렌탈이 하루 동안만 이루어진 경우에도 일수 차이가 0이 아니라 1이 되도록 합니다.
오늘은 JPA 관련 강의를 듣고 블로그에 정리하며 시간을 보냈다.
오늘 2, 3주 차 강의를 들었지만 정리는 2주 차만 했다!
내일 나머지 강의 다 듣고, 정리도 해야지~