rollup 관련 질문이 있습니다.. 0 4 1,231

by 문선린 [SQL Query] [2014.11.12 11:34:37]


rollup 결과에 대해 뭔지 이해가 안되는 부분이 있어서요..

위 쿼리에서 맨 아래에 rollup 결과가 나오는데요..

그 값이 도대체 어떻게 해서 나오는지 이해를 못하겠어요..

첫번째 max(v)/min(v) 절도.. 왜 9가 나오는지..

이부분 간단하게나마 설명좀 부탁드려도 될까요?

 

with t as (
    select 'A' typ, '1' v from dual union all
    select 'A' typ, '2' v from dual union all
    select 'B' typ, '3' v from dual union all
    select 'B' typ, '4' v from dual union all
    select 'C' typ, '5' v from dual union all
    select 'C' typ, '6' v from dual union all
    select 'D' typ, '7' v from dual union all
    select 'D' typ, '8' v from dual union all
    select 'E' typ, '9' v from dual union all
    select 'E' typ, '10' v from dual
)
select typ
     , max(v)/min(v) dd
     , max(v)
     , sum(v)
     , min(v)
  from t
 group by rollup(typ)

 

by 꿀현 [2014.11.12 12:32:59]

v가 캐릭터 타입이네요 '' 빼고 적어보세요


by 문선린 [2014.11.12 12:37:35]

답변 너무 감사드립니다.

'를 빼고 실행해 봤는데요..

그렇게 하니까 10이 나오네요..

10은 어떤 기준에서 나온 값인지.. 설명 좀 부탁드려도 될까요?

그리고  min(v)절의 합계값도 1이 나오는데.. 이것도 왜 이런지.. 이해를 잘 못하고 있습니다ㅜㅜ

max(v)절의 합계값도 9가 나오는데.. 제가 기초를 이해못하는 부분이 있는지..

 

with t as (
    select 'A' typ, 1 v from dual union all
    select 'A' typ, 2 v from dual union all
    select 'B' typ, 3 v from dual union all
    select 'B' typ, 4 v from dual union all
    select 'C' typ, 5 v from dual union all
    select 'C' typ, 6 v from dual union all
    select 'D' typ, 7 v from dual union all
    select 'D' typ, 8 v from dual union all
    select 'E' typ, 9 v from dual union all
    select 'E' typ, 10 v from dual
)
select typ
     , max(v)/min(v) dd
     , max(v)
     , sum(v)
     , min(v)
  from t
 group by rollup(typ)

 


by 란돌 [2014.11.12 13:22:09]

rollup의 원리에 대한 이해가 필요하신 것 같은데요

아래 링크의 댓글중에 마농님이 알기쉽게 설명해주신 부분 참고하시면 이해가 가실겁니다.

http://www.gurubee.net/article/23130

 

결과만 말씀드리면 맨 아랫줄은 typ 값별 그룹이 아닌

해당 데이타 전체를 그룹핑한 결과이기 때문에

min(v) 는 전체 v중 가장 작은 값인 1

max(v) 는 전체 v중 가장 큰 값인 10 이 되고

max(v)/min(v)는 10/1 이되어 10이 나오는 것입니다.


by 문선린 [2014.11.12 14:45:25]

정말 많은 도움이 되었습니다.

답변 감사드립니다.

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