728x90
320x100
MySQL
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
- 날짜 계산할 때 처음에 단순하게 END_DATE-START_DATE 이렇게 계산 했는데, 죽어도 안됨. 알고보니 DATEDIFF() 함수를 사용해야 했어야함.
- 왜 DATEDIFF 함수를 사용함? -> DATEDIFF 함수는 일수로 계산하고 그냥 (-) 하면 초단위로 계산해서 DATEDIFF 함수가 더 정확함.
Oracle
SELECT CAR_ID
, ROUND(AVG(END_DATE-START_DATE+1), 1) AS AVERAGE_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
HAVING ROUND(AVG(END_DATE-START_DATE+1), 1) >= 7
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC
;
728x90
320x100
'💻 하나씩 차곡차곡 > 프로그래머스 (SQL)' 카테고리의 다른 글
[String, Date/LEVEL2] 중성화 여부 파악하기 (MySQL/Oracle) (0) | 2023.06.19 |
---|---|
[String, Date/LEVEL2] 루시와 엘라 찾기(MySQL/Oracle) (0) | 2023.06.16 |
[String, Date/LEVEL2] 조건에 부합하는 중고거래 상태 조회하기 (MySQL/Oracle) (0) | 2023.06.14 |
[String, Date/LEVEL1] 자동차 대여 기록에서 장기/단기 대여 구분하기 (MySQL/Oracle) (0) | 2023.06.13 |
[String, Date/LEVEL1] 특정 옵션이 포함된 자동차 리스트 구하기 (MySQL/Oracle) (0) | 2023.06.12 |