runod계산 0 2 1,924

by stylebox runod 소수점 [2012.03.02 13:46:08]



ROUND(NVL(SUM(aa),0)/NVL(SUM(bb),1)*100,3) cc

aa필드합을 bb필드으로 나눈다음 100으로 곱하고 3째자리까지 구해서 cc로 뿌려주고 있습니다.

먼저 0.111 이렇게 나와야되는데 .111로 나오는데
0.111로 변경하는 방법이 궁금합니다.

그리고 NVL(SUM(bb),1) aa합이 0이 나올떄 오류뜨는문제를 해결하기 위해 1로 잡았는데
이방법말고 다른방법이 있는지 궁금하네요.

원래 값을 변수에 저장한다음 계산할려구 했는데 sql에서 직접 하는게 더 빠를꺼 같아서
이렇게 했는데 맞나요..??
by 마농 [2012.03.02 13:58:23]

0.111 이나 .111 이나 같은 수입니다. 굳이 바꿔야 하나요?
꼭 0 이 나와야 한다면 TO_CHAR 을 이용하시면 됩니다만.
이 때 반환되는 값은 숫자가 아닌 문자입니다.
또한 문자열 표시할때는 자잘하게 신경써야 할 것이 많습니다.
정수인 경우? 소수점이하 3자리가 아닌경우 등등...
직접 해보시면 결코 쉽지만은 않을 것입니다.

0을 널로 바꾸어 처리하세요.
그리고 꼭 0 이 나와야 하나요? 결과가 널인게 오히려 정확하다고 생각됩니다.
SUM(aa) / NULLIF(SUM(bb), 0)

by stylebox [2012.03.02 14:54:33]

좋은 답변 감사합니다.

첫번째는 다시한번 확인을 해보겠습니다.
두번째는 NULLIF(SUM(bb), 0)으로 적용했네요.

오늘도 행복한 하루되세요

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입