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

코드설명

 AVG + REPLACE + ROUND 를 활용합니다.

 

우선 이번 문제에서 배운점은, SALARY는 iNTEGER값인데 REPLACE가 가능하다는 점입니다. 

ORACLE이나 DBMS에서 자동으로 '암시적 형변환'을 해준다는 것이겟죠.

좀 더 명확히 사용하려면 TO_CHAR로 SALARY를 변형한뒤 사용하는게 좋겠습니다.

그리고 좀 더 찾아보니 REPLACE 사용시 문자열로 반환되는데 결과는 항상 VARCHAR2로 반환된다고 합니다.

또, 역시나 숫자를 문자열로 항상 변환시켜야하기에 성능저하가 있을 수 있겠지요.

 

그리고 올림처리 같은경우 ROUND함수에 0.5를 더하면 올림이 됩니다.

CEIL(올림)이나 FLOOR(버림)를 사용하는것도 가능합니다.

ORACLE 코드

SELECT ROUND(AVG(SALARY) - AVG(REPLACE(SALARY, '0','')) + 0.5, 0) 
FROM EMPLOYEES;

+ Recent posts