https://www.hackerrank.com/challenges/the-blunder/problem?isFullScreen=true
코드설명
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;
'SQL > HackerRank' 카테고리의 다른 글
[SQL][HackerRank] Weather Observation Station 2 - ROUND + SUM ORACLE (0) | 2024.10.04 |
---|---|
[SQL][HackerRank] Top Earners - GROUP BY + ROWNUM ORACLE (0) | 2024.10.04 |
[SQL][HackerRank] Population Density Difference - MAX + MIN ORACLE (0) | 2024.10.03 |
[SQL][HackerRank] Japan Population - SUM ORACLE (0) | 2024.10.03 |
[SQL][HackerRank] Average Population - Averages - ROUND + AVG ORACLE (0) | 2024.10.02 |