본문 바로가기
Database

[Oracle]The Blunder(풀이 성공)

by 전봇대파괴자 2021. 4. 7.

문제

사원들의 이름과 ID, 월급을 담은 스키마 EMPLOYEES가 있다.  

사만다는 이 스키마를 작성하며 사원들의 평균 월급을 구하려 한다. 하지만 그녀는 작성 중 키보드의 0키가 망가진 것을 알지 못했다. 후에 이를 알아차린 그녀는 잘못 입력한 월급의 평균과 원래 입력했어야 할 월급 평균의 차를 구해 수정하고자 한다.

원래 입력했어야 할 월급의 평균-잘못 입력한 월급 평균을 구하여라. 단, 소수점이 있을 경우 정수로 올림한다. 

 

Sample Input :

Sample Output :

2061

 

내 코드:

select ceil(avg(salary)-avg(to_number(replace(to_char(salary), '0', ''))))
from employees;

Comment: Salary 컬럼에서 잘못 입력한 경우의 평균을 구하는 것이 핵심인 문제입니다. 그 과정은 다음과 같이 진행됩니다.

 

1. 우선 salary 컬럼을 to_char를 통해 문자열로 바꿉니다. 

2. replace를 통해 '0'을 ''로 치환하여 제거합니다. 

3. 0이 제거된 salary 컬럼을 to_number를 통해 다시 정수로 되돌립니다. 

4. avg를 통해 평균을 구합니다. 

 

올림을 할 때는 ceil을 써주면 됩니다.