DB/Oracle
[Oracle] Programmers - 평균 일일 대여 요금 구하기
코딩마루
2025. 1. 28. 16:44
1. 문제
다음은 어느 자동차 대여 회사에서 대여중인 자동차들의 정보를 담은 CAR_RENTAL_COMPANY_CAR 테이블입니다. CAR_RENTAL_COMPANY_CAR 테이블은 아래와 같은 구조로 되어있으며, CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONS는 각각 자동차 ID, 자동차 종류, 일일 대여 요금(원), 자동차 옵션 리스트를 나타냅니다.
자동차 종류는 '세단', 'SUV', '승합차', '트럭', '리무진' 이 있습니다. 자동차 옵션 리스트는 콤마(',')로 구분된 키워드 리스트(예: '열선시트', '스마트키', '주차감지센서')로 되어있으며, 키워드 종류는 '주차감지센서', '스마트키', '네비게이션', '통풍시트', '열선시트', '후방카메라', '가죽시트' 가 있습니다.
CAR_RENTAL_COMPANY_CAR 테이블에서 자동차 종류가 'SUV'인 자동차들의 평균 일일 대여 요금을 출력하는 SQL문을 작성해주세요. 이때 평균 일일 대여 요금은 소수 첫 번째 자리에서 반올림하고, 컬럼명은 AVERAGE_FEE 로 지정해주세요.
2. 풀이
SELECT ROUND(SUM(DAILY_FEE)/COUNT(*)) AS AVERAGE_FEE
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = 'SUV'
- 반올림, 절사, 올림, 내림: ROUND, TRUNC, CEIL, FLOOR
- 절사: 숫자의 정수부분만 필요한 경우 사용한다. [TRUNC(3.14)=3, TRUNC(-3.14)=-3)
- 내림: 숫자보다 작거나 같은 가장 큰 정수가 필요한 경우 사용한다. [FLOOR(3.14)=3, FLOOR(-3.14)=-4)
- 집계함수: 여러 행 또는 테이블 전체 행으로부터 하나의 결괏값을 반환하는 함수
- COUNT: 검색된 행의 개수를 출력한다.
[COUNT(*)은 NULL을 포함한 모든 값을 세고, COUNT(COLUMN_NAME)을 사용하면 해당 칼럼의 NULL값을 제외한 개수가 반환된다.] - SUM: 검색된 행의 모든 합을 반환한다.
- MAX: 검색된 행중 최대값을 반환한다.
- MIN: 검색된 행중 최소값을 반환한다.
- AVG: 검색된 행의 평균 값을 계산한다.
- COUNT: 검색된 행의 개수를 출력한다.
AVG를 활용하면 아래와 같이 SQL를 변경할 수 있다.
SELECT ROUND(AVG(DAILY_FEE)) AS AVERAGE_FEE
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = 'SUV'