Notice
Recent Posts
Recent Comments
Link
250x250
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- 미니정리
- 프로그래머스
- 코드테스트
- 백엔드
- 코드 테스트
- 자바스크립트
- 서버
- spring
- jpa
- node.js
- 데이터베이스
- oracle
- 디자인 패턴
- 스프링
- 알고리즘
- 프런트엔드
- jsp
- 정리
- 오라클
- BACK-END
- SQL
- 자바
- web
- java
- 스프링부트
- MySQL
- Next.js
- 쿼리
- JavaScript
- 프론트엔드
Archives
- Today
- Total
참치코더의 꿈 메모장
Oracle / 프로그래머스 - 자동차 평균 대여 기간 구하기 본문
728x90

|
1
2
3
4
5
|
SELECT CAR_ID, TO_CHAR(ROUND(AVG(END_DATE - START_DATE + 1), 1), 'FM99990.0') 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 ROUND(AVG(END_DATE - START_DATE + 1), 1) DESC, CAR_ID DESC;
|
cs |
- 전체 테이블에서 평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간 리스트를 출력하는 문제이다.
- 해당하는 테이블을 FROM 절로 잡고 자동차들의 평균 대여기간을 구해야 하기 때문에
CAR_ID를 기준으로 그룹핑 해주었다. 다음 HAVING 조건으로 END_DATE 에서 START_DATE를 빼서 대여기간을
구한 후에(일수가 1일 모자르기 때문에 + 1) 평균 대여 기간이 7일 이상인 자동차들의 평균 이므로 >= 7을 해주었다.
- 이렇게 구한 값에 SELECT 문으로 CAR_ID 와 평균값을 입력해 준 다음(TO_CHAR을 이용하여 ' FM99990.0 ' 포맷으로
해당 평균을 소수점 두번째 자리에서 반올림) 해준다면 값을 얻을 수 있다.
- FM -> 불필요한 왼쪽 공백 제거 , 99990 -> 정수 부분 숫자 자리를 표시, 9가 숫자 자리 0은 숫자가 없으면 0으로 채움
- 조금 의문이긴 한데... 문제에서 소수점 2자리까지 반올림이니까 ROUND(..., 2) 'FM99990.00' 이런식으로 해야하지 않나...
아무튼 정답은 'FM99990.0' 문제 설명이 모호한것 같다
- 마지막으로 ORDER BY 문으로 문제 조건처럼 평균 대여 기간으로 내림차순 정렬, 평균 대여 기간이 같으면 자동차 ID를
기준으로 내림차순 정렬하면 문제의 정답을 얻을 수 있다 ^^
728x90
'Oracle' 카테고리의 다른 글
| Oracle / 프로그래머스 - 조건에 부합하는 중고거래 댓글 조회하기 (0) | 2025.09.24 |
|---|---|
| Oracle / 프로그래머스 - 입양 시각 구하기(1) (0) | 2025.09.21 |
| Oracle / 프로그래머스 - 12세 이하인 여자 환자 목록 출력하기 (1) | 2025.09.17 |
| Oracle / 프로그래머스 - 중복 제거하기 (0) | 2025.09.16 |
| Oracle / 프로그래머스 - 카테고리 별 상품 개수 구하기 (0) | 2025.09.14 |
Comments