Mo!
(HackerRank) 해커랭크 SQL [The Blunder] Oracle 풀이 본문
SQL

(HackerRank) 해커랭크 SQL [The Blunder] Oracle 풀이

5사 2021. 12. 14.

문제 링크

https://www.hackerrank.com/challenges/the-blunder/problem?isFullScreen=true 

 

The Blunder | HackerRank

Query the amount of error in Sam's result, rounded up to the next integer.

www.hackerrank.com

사만다는 직원 테이블에 있는 모든 직원의 평균 월급을 계산하는 일을 맡았지만
계산을 마친 후에야 키보드의 0 키가 고장 났다는 것을 알았다.
그녀는 잘못 계산한 평균 급여과 실제 평균 급여 간의 차이를 찾는 데 도움을 받고자 한다.

오류의 양(즉, 실제 - 잘못 계산된 월평균 급여)을 계산하는 질의를 작성하여 다음 정수로 반올림합니다.

 

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

 

-- 사만다는 월급을 입력할 때 0이 없이 입력하여 계산하였기 때문에 원래 salary 칼럼의 데이터에서 0은 제외시킨 후 평균값을 구해야 한다

-- 이를 위해 replace를 사용하여 0을 없애주었다

-- 원래 salary 데이터 평균과 0이 없어진 salary 데이터 평균을 빼는데 문제에서 이 값을 반올림하라고 하였다

-- 처음에 round를 써줬는데 소수 자리 숫자가 5 미만 이어서 버림이 되었다

-- 그래서 ceil(올림)을 써줬더니 답이 되었다 (문제에서 원하는 답은 소수점 자리 숫자와 상관없이 올림을 원했던 것)

 

 

# 숫자가 들어있는 데이터에서 0을 없애는 방법

replace(칼럼명, 0, '')

 

 

# 참고

(SQL) 반올림, 올림, 내림, 버림(round, ceil, floor, trunc) Oracle

 

(SQL) 반올림, 올림, 내림, 버림(round, ceil, floor, trunc) Oracle

ROUND 반올림 select round(34.567), round(34.567, 2), round(34.567, 1), round(34.567, 0), round(34.567, -1), round(34.567, -2) from dual; -- round(숫자, 위치) 위치가 없을 경우는 위치가 0일 경우와 같..

dong8ee.tistory.com

 

 

 

Comments