CODING TEST/MySQL
Lv1 - 평균 일일 대여 요금 구하기
iamyuunzo
2025. 7. 16. 21:53
📌 문제 정보
- 문제 이름 : 프로그래머스 - (SELECT) 평균 일일 대여 요금 구하기
- 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/151136
📌 문제 요약
- CAR_RENTAL_COMPANY_CAR 테이블 : CAR_ID(자동차 ID), CAR_TYPE(자동차 종류), DAILY_FEE(일일 대여 요금(원)), OPTIONS(자동차 옵션 리스트)
- CAR_RENTAL_COMPANY_CAR 테이블에서 자동차 종류가 'SUV'인 자동차들의 평균 일일 대여 요금을 출력하는 SQL문 작성. 이때 평균 일일 대여 요금은 소수 첫 번째 자리에서 반올림하고, 컬럼명은 AVERAGE_FEE 로 지정
예시)
| CAR_ID | CAR_TYPE | DAILY_FEE | OPTIONS |
| 1 | 세단 | 16000 | 가죽시트,열선시트,후방카메라 |
| 2 | SUV | 14000 | 스마트키,네비게이션,열선시트 |
| 3 | SUV | 22000 | 주차감지센서,후방카메라,가죽시트 |
출력)
| AVERAGE_FEE |
| 18000 |
📌 내 풀이 및 코드
SELECT ROUND(AVG(DAILY_FEE)) AS AVERAGE_FEE
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = 'SUV';
📌 새로 배운 문법
<-- 이번 문제에서 새로 배운 Java 문법 정리 -->
** AVG(), ROUND() 함수 **
- AVG() : 평균 함수 - 숫자 컬럼의 평균값(산술 평균)을 구하는 집계 함수로 NULL값은 무시함.
- ROUND() : 반올림하는 함수 (deciaml_plaes를 생략하면 정수 반올림.)
# AVG(column_name)
-- DAILY_FEE 값이 1000, 2000, 3000이라면
SELECT AVG(DAILY_FEE); -- 결과: 2000
# ROUND(number [, decimal_places])
-- 예시
SELECT ROUND(123.456); -- 결과: 123
SELECT ROUND(123.456, 1); -- 결과: 123.5
SELECT ROUND(123.456, 2); -- 결과: 123.46
# 두 함수 합치기 예시 : ROUND(AVG(...))
SELECT ROUND(AVG(DAILY_FEE)) AS AVERAGE_FEE
-- 1. AVG(DAILY_FEE)로 평균 구하기
-- 2. ROUND(...)로 소수점 반올림한 뒤
-- 3. 그 값을 AVERAGE_FEE라는 이름으로 출력