본문 바로가기
데이터/SQL 문제풀이

HackerRank SQL - The Blunder

by 찌노오 2022. 11. 1.

 

 

 

Samantha was tasked with calculating the average monthly salaries for all employees in the EMPLOYEES table, but did not realize her keyboard's  key was broken until after completing the calculation. She wants your help finding the difference between her miscalculation (using salaries with any zeros removed), and the actual average salary.

Write a query calculating the amount of error (i.e.:  average monthly salaries), and round it up to the next integer.

Input Format

The EMPLOYEES table is described as follows:

Note: Salary is per month.

Constraints

.

Sample Input

예시

Problem

전체 Salary 평균(actual)과 Salary에서 0을 모두 없앤 값(miscalculated)의 평균의 차이를 정수(올림)를 반환하는 쿼리를 작성하라.

 


Answer1

SELECT CEIL(AVG(SALARY)-AVG(REPLACE(SALARY,0,'')))
FROM EMPLOYEES

 


How to solve

갑자기 문제 길이도 길어지고 또 뭔가 어렵게 보인다,

살짝 뇌정지가 왔지만 0을 아예 없는 값으로 지운다는 느낌으로 접근했다.

 

 올림 함수는 사실 처음 본 것 같다. 무언가 추출할 때는 굳이 반올림, 올림, 내림과 같은 숫자함수를 잘 쓰일 일이 없는 데, 최종 결과물을 만드는 단계의 툴에서 하기 때문이다.

특히 대시보드를 만들 때는 더더욱 필요가 없었던 이유가 대부분의 소프트웨어 안에서 해결이 가능하기 때문이다.

 

간단하게 관련 숫자함수를 정리해보았다.

 

CEIL / CEILING(expr) : 올림

가장 가까운 정수로 올림하여 반환한다.

 

FLOOR : 버림

가장 가까운 정수로 내림하여 반환한다.

 

ROUND : 반올림

지정하는 자리수로 반올림하여 반환하는데, 마이너스(-)는 양수 자리수, 플러스(+)는 음수 자리수가 된다.

만약 소수 둘째자리까지 표현하고 싶다면, ROUND(expr, 2) 가 된다.

 

 

 

 

 

반응형

댓글