티스토리 뷰

반응형

🚩 문제

평일 일일 대여 요금 구하기

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

자동차 대여 회사의 대여 중인 자동차 정보를 담은 테이블 기반으로 한다. 

 

  • CAR_ID: 자동차 ID
  • CAR_TYPE: 자동차 종류(세단, SUV, 승용차, 트럭, 리무진)
  • DAILY_FEE: 일일 대여 요금(원)
  • OPTIONS: 자동차 옵션 리스트 (열선시트, 스마트키, 주차감지센서 등)

요구 사항

  1. CAR_TYPE이 'SUV'인 자동차들의 평균 일일 대여 요금을 구해야 한다.
    이 값을 'AVERAGER_FEE'라는 값으로 출력해야 한다. 
  2. 평일 일일 대여 요금은 소수 첫 번째 자리에서 반올림한다.

 

🔎문제 분석 요약

  • CAR_TYPE이 'SUV'인 자동차들을 필터링한다.
  • 이 자동차들의 'DALY_FEE'값을 기준으로 평균을 계산한다. 
  • 계산된 평귤을 소수 첫 번째 자리에서 반올림한다. 

 

🗝️알고리즘 설계

  1. WHERE 절을 사용해 CAR_TYPE이 'SUV"인 데이터만 필터링한다. 
  2. AVG 함수를 사용해 DAILY_FEE의 평균을 구한다.
  3. ROUND 함수를 사용해 소수 첫 번째 자리에서 반올림한다.
  4. AS 키워드를 사용해 결과 컬럼의 이름을 AVERAGE_FEE로 지정한다. 

 

💡틀린 부분 (1차 시도)

SELECT AVG(ROUND(DAILY_FEE,1)) AS AVERAGE_FEE 
FROM CAR_RENTAL_COMPANY_CAR;

//출력
AVERAGE_FEE
127366.6667

분석:

  • ROUND(DAILY_FEE, 1)을 사용해 각 개별 요금을 소수 첫 번째 자리에서 반올림한 후 평균을 구하는 방식은 의도와 달랐다.
    의도: 소수점을 버리고, 반올림된 값이 아닌 원래의 요금을 기반으로 평균을 구한 뒤, 그 평균값을 반올림해야 했다.
  • 소수점 뒷자리를 없애기 위해서는 ROUND 함수를 AVG 함수의 결과에 적용해야 한다.
    ➡️ ROUND(AVG(칼럼명), 반올림할 자릿수) 
    ➡️ 반올림할 자릿수는 소수 몇 자리까지 남기는지를 결정하는 것이다. 예를 들어, 0을 넣으면 소수점 아래를 모두 버리고 정수로 반올림된다. 

 

💻 소스 코드 (2차 시도, 정답 코드)

SELECT ROUND(AVG(DAILY_FEE),0) AS AVERAGE_FEE 
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = 'SUV';

 

 

분석:

  • CAR_TYPE이 'SUV'인 경우만 필터링한 후, 그 평균을 구하고, ROUND 함수로 소수 첫 번째 자리에서 반올림하여 정수로 반환한다.
반응형