ROUND를 활용한 퍼센트(%) 구하기 질문 0 2 8,709

by DJ메탈짱™ [PL/SQL] ROUND 나누기 [2009.11.23 20:45:46]



TO_CHAR(SUM(LDAY_CCNT))||'('||TO_CHAR(DECODE(SUM(LDAY_CCNT),0,NULL,ROUND((SUM(TODAY_CCNT2)/SUM(LDAY_CCNT))*100)-100))||'%)' AS LDAY_CCNT,

TO_CHAR(SUM(LMONTH_CCNT))||'('||TO_CHAR(DECODE(SUM(LMONTH_CCNT),0,NULL,ROUND((SUM(MONTH_CCNT)/SUM(LMONTH_CCNT))*100)-100))||'%)' AS LMONTH_CCNT,

TO_CHAR(SUM(LYEAR_CCNT))||'('||TO_CHAR(DECODE(SUM(LYEAR_CCNT),0,NULL,ROUND((SUM(YEAR_CCNT)/SUM(LYEAR_CCNT))*100)-100))||'%)' AS LYEAR_CCNT,

위와 같은 계산식으로 사용하였는데... 문제는 LMONTH_CCNT 값입니다.
첨부파일 봐주시면 전월에 비해 증가를 했는데.
위의 계산식대로 하면 분모가 0인 관계로 계산이 되지를 않는데... 계산식이 잘못된건가요?
계산식의 조언좀 부탁드립니다.... (__) 꾸벅...

by 마농 [2009.11.24 08:05:12]
계산식이 틀리진 않았죠.
당연한 결과입니다. 전월의 실적이 없다면 전월대비 증감율을 구할수가 없습니다.
decode대신 nullif를 사용하여 쿼리를 간략하게 줄여봤습니다.
--TO_CHAR(SUM(LDAY_CCNT))||'('||TO_CHAR(DECODE(SUM(LDAY_CCNT),0,NULL,ROUND((SUM(TODAY_CCNT2)/SUM(LDAY_CCNT))*100)-100))||'%)' AS LDAY_CCNT,
TO_CHAR(SUM(lday_ccnt))||'('||TO_CHAR(ROUND((SUM(today_ccnt2)/NULLIF(SUM(LDAY_CCNT),0))*100)-100)||'%)' AS lday_ccnt,

by DJ메탈짱™ [2009.11.24 10:14:25]
아아~~~~~역시 마농님!!! 마농님 때문에 이 왕초짜가 살아가고 있습니다. 감사합니다 (__) 꾸벅!!!!
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입