본문 바로가기

Skill Sets/SQL

[SQL] 평균 일일 대여 요금 구하기(프로그래머스/MySQL/Level 1)

SMALL

안녕하세요! 데코입니다!

오늘은 프로그래머스 코딩테스트 연습에 있는 "평균 일일 대여 요금 구하기" 문제를 포스팅하려고 합니다!

 

바로 포스팅 시작할게요! :)

(출처 : https://school.programmers.co.kr/learn/courses/30/lessons/151136)

1. 문제 : 평균 일일 대여 요금 구하기(Lv. 1)

2. 문제 설명

다음은 어느 자동차 대여 회사에서 대여중인 자동차들의 정보를 담은 CAR_RENTAL_COMPANY_CAR 테이블입니다.
CAR_RENTAL_COMPANY_CAR 테이블은 아래와 같은 구조로 되어있으며,
CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONS는
각각 자동차 ID, 자동차 종류, 일일 대여 요금(원), 자동차 옵션 리스트를 나타냅니다.

 

[ 테이블 구조 ]

COLUMN NAME TYPE NULLABLE
CAR_ID INTEGER FALSE
CAR_TYPE VARCHAR(255) FALSE
DAILY_FEE INTEGER FALSE
OPTIONS VARCHAR(255) FALSE

자동차 종류는 '세단', 'SUV', '승합차', '트럭', '리무진' 이 있습니다.
자동차 옵션 리스트는 콤마(',')로 구분된 키워드 리스트(예: '열선시트', '스마트키', '주차감지센서')로 되어있으며,
키워드 종류는 '주차감지센서', '스마트키', '네비게이션', '통풍시트', '열선시트', '후방카메라', '가죽시트' 가 있습니다.

 

[ 문제  ]

CAR_RENTAL_COMPANY_CAR 테이블에서
자동차 종류가 'SUV'인 자동차들의 평균 일일 대여 요금을 출력하는 SQL문을 작성해주세요.
이때 평균 일일 대여 요금은 소수 첫 번째 자리에서 반올림하고, 컬럼명은 AVERAGE_FEE 로 지정해주세요.

 

[ 예시 ]

예를 들어 CAR_RENTAL_COMPANY_CAR 테이블이 다음과 같다면

ANIMAL_ID ANIMAL_TYPE DATETIME INTAKE_CONDITION NAME SEX_UPON_INTAKE
A399552 Dog 2013-10-14 15:38:00 Normal Jack Neutered Male
A379998 Dog 2013-10-23 11:42:00 Normal Disciple Intact Male
A370852 Dog 2013-11-03 15:04:00 Normal Katie Spayed Female
A403564 Dog 2013-11-18 17:03:00 Normal Anna Spayed Female

'SUV' 에 해당하는 자동차들의 평균 일일 대여 요금은 18,000 원 이므로,

다음과 같은 결과가 나와야 합니다.

 

[ 출력 결과 ]

AVERAGE_FEE
18000

 

3. 문제 풀이

# 1안
SELECT  ROUND(AVG(DAILY_FEE),0) AS AVERAGE_FEE
  FROM  CAR_RENTAL_COMPANY_CAR 
 WHERE  CAR_TYPE = "SUV"

이번 문제는 1안 한 가지로 작성했습니다!

#  1안 풀이 설명

# [ 문제 접근 설명 ]

이번 문제의 요구사항을 정리해 보면,

"SUV" 차량의 평균 일일 대여 요금을 구하면 되는 문제입니다!

 

따라서 'CAR_TYPE' 컬럼에서 "SUV" 차량을 필터링하고

집계 함수중 평균을 구하는 AVG() 함수와 반올림을 하는 ROUND() 함수를 이용하여 조회하면 됩니다!

 

# [ 1안 쿼리 작성 설명 ]

CAR_RENTAL_COMPANY_CAR 테이블에 존재하는 컬럼들이 [출력 결과]에 나와 있는 컬럼들과 동일하게

 

" SELECT "문에는 일일 요금을 나타내는 'DAILY_FEE' 컬럼에 대하여 평균 값을 산출 = AVG(DAILY_FEE) 

이후 소수점 첫 번째에서 반올림을 하기 위해 ROUND() 함수 적용 = ROUND(AVG(DAILY_FEE))

나온 값을 'AVERAGE_FEE'으로 나타나게 변경(Alias를 이용한 별칭 설정)

" WHERE " 통해 'CAR_TYPE' 컬럼에서 "SUV" 값만을 조회

이렇게 쿼리를 작성했습니다!

 


4. 데코의 문제 풀이 후기

이번 문제는 집계 함수와 소수점을 다루는 함수를 같이 이용하는 문제예요!

 

제가 작성한 쿼리에 나온 내용들은 이전 포스팅에서 다룬 내용이 전부 들어가 있어서 따로 설명한 내용은 없네요!

 

지금 다루고 있는 문제들은 프로그래머스 문제의 LV. 1과 LV. 2를 주로 다루고 있다 보니까

아직은 난이도도 쉬운 편이고, 비슷한 문제가 종종 나오고 있어요!

 

많이 나오는 유형은 그만큼 분석에 많이 활용된다고 생각하시면 됩니다! 

 

추후에 문제 난이도가 높아지거나 현업에서 많이 활용되는 내용이 나오면

더욱 자세하게 포스팅해 볼게요!

 

이번 문제는 집계 함수와 소수점을 다루는 함수를 같이 이용하는 문제를 풀어봤습니다!

(복습 느낌이 강한 문제네요!)

 

설명이 어려운 부분 혹은 잘 이해가 안 가는 부분은 그리고 더 궁금한 내용이 있다면

언제든지 댓글로 남겨주세요!
빠르게 궁금증을 해결해드릴게요!

공감과 댓글은 큰 힘이 됩니다!
읽어주셔서 감사해요!

 

또 다른 SQL 문제로 찾아뵐게요!

LIST