Rollup과 round 처리 관련 질문입니다. 0 2 10,005

by 커피요쿠르트d [SQL Query] oracle rollup round [2013.04.16 20:01:40]


수고하십니다.

rollup을 이용하여 총계를 내는 작업을 하다가 문의드릴게 있어 질문드립니다.

금액의 합계 같은 것을 다루시면 반올림, 버림.. 등의 작업등을 하실거 같은데요.. 이런 문제는 어떻게 처리하시는지 궁금하여 올립니다.

아래와 같은 자료가 있습니다.

with tbl1 as(
select 'aa' code, 4.5 value from dual union all
select 'aa' code, 4.5 value from dual union all 
select 'aa' code, 4.5 value from dual union all
select 'bb' code, 4.5 value from dual union all
select 'bb' code, 4.5 value from dual union all 
select 'bb' code, 4.5 value from dual 
)select code, round(sum(value)) from tbl1 group by rollup (code) ;

with tbl2 as (
select 'aa' code, 4.5 value from dual union all
select 'aa' code, 4.5 value from dual union all 
select 'aa' code, 4.5 value from dual union all
select 'bb' code, 4.5 value from dual union all
select 'bb' code, 4.5 value from dual union all 
select 'bb' code, 4.5 value from dual 
)select code, sum(round(value)) from tbl2 group by rollup (code) ;

 
윗부분은 sum()을 하고 round() 처리를 한 것이구요 .
아랫부분은 round()를 하고 sum()을 한것이구요.

당연히 다르게 나오겠지요;; 

윗부분에 주목하여..
제가 원하는 결과는 
각 row에 4.5의 합의 round()결과인 14가 나오고 , 그 값들의 sum()인 28이 나오면 좋겠는데요...아래와 같이요..ㅠㅠ

 

with result as(
select 'aa' code, 14 value from dual union all
select 'bb' code, 14 value from dual union all
select '' code, 28 value from dual 
)select * from result 

 





윗부분은 13.5의 합의 round()결과인 27이 나오네요..
아랫부분은 15의 합인 30이 나오구요..

사실.. 저렇게 되는게 당연한건데....
요런 경우 어떻게 처리하시는 지 궁금합니다. 



grouping(code)를 사용하여 총계row만 다르게 처리를 해볼려하였으나.. 
제 생각같이 움직이진 않더군요 ...

혹시 좋은 방법 아시면 가르침을 부탁드립니다 .


그럼 따땃한 저녁 되시길 바랍니다... 
by 마농 [2013.04.17 08:16:10]
-- 단계별로 진행하세요.
-- 2단계. Rollup --
SELECT code
     , SUM(value) value
  FROM (-- 1단계. Group By, Round --
        SELECT code
             , ROUND(SUM(value)) value
          FROM tbl1
         GROUP BY code
        )
 GROUP BY ROLLUP(code)
 ORDER BY code
;

by 커피요쿠르트d [2013.04.17 17:07:00]
채택이 늦어 죄송합니다.;; ㅠㅠ


하루 종일 정신이 없어서
역시 한번에는 안되는 것이었군요..

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