2010-07-01 3 views
8

모든 순열을 생성하는 것으로 CUBE를 알아 냈습니다 만 ROLLUP에 문제가 있습니다. 온라인에서 좋은 자료가없는 것 같아요. 저와 같이 고민하는 사람들을 위해 SQL을 설명하기 위해 읽고있는 책 에서요.SQL에서 ROLLUP 이해하기

ROLLUP은 결과 내의 계층 구조를 따르지 않는 모든 사례를 제외하는 CUBE 연산자의 특별한 경우라고합니다.

나는 그것이 무엇을 의미하는지 완전히 모르겠다. 그러나 내가 만든 테이블에서 그것을 실행하는 것은 유용한 결과를 가져온다.

내가 이런 식으로 구글의 다른 페이지에서 테이블을 만든 : 이것은 각 점포에서 나에게 애완 동물의 각 유형의 수를 표시

select store,[type], SUM(number) as Number from pets 

group by store, [type] 

with rollup 

: 그럼 여기

Type  Store  Number 
Dog  Miami  12 
Cat  Miami  18 
Turtle Tampa  4 
Dog  Tampa  14 
Cat  Naples  9 
Dog  Naples  5 
Turtle Naples  1 

은 내가 만든 쿼리입니다 , 그리고 각 가게의 전체 애완 동물, 좀 멋지다. 애완 동물에 기반한 쿼리를보고 싶다면 그룹을 순서대로 전환해야하므로 유형이 먼저 오게됩니다.

첫 번째 그룹 by 절을 기반으로하는 롤업입니까?

다른 질문은 여러 해에 걸친 같은 달을 집계하는 것을 중단하는 년과 월 열이있을 때 CUBE 대신 ROLLUP을 사용한다는 것입니다. 나는 이것이 무엇을 의미하는지 이해한다고 생각하지만, 누구든지 그것을 명확히 할 수 있습니까? 그리고 어떻게 이런 식으로 설정합니까?

ROLLUP을 사용하여 다른 조합의 열을 제외 할 수 있습니까? 위의 테이블은 매우 간단하며 쿼리는 "상점 별 애완 동물"을 보여줍니다. 그러나 다른 열이 있으면 결과에서 포함 시키거나 제외시킬 수 있습니까?

답변

13

예제를 통해 가장 잘 설명됩니다. 그룹을 A, B, C으로 가정하십시오. 다음 롤업을 사용하여 다음 그룹을 만듭니다.

(A, B, C) 
(A, B) 
(A) 
() 

따라서 이미 알았 듯이 순서가 중요하다는 것을 알 수 있습니다. A, C, B에 의해 그룹 당신이 경우에, 당신은 대신 다음 그룹을 얻을 :

(A, C, B) 
(A, C) 
(A) 
() 
+0

오 와우 것을 이해하기가 대량으로 쉽게! 그들이 교과서에 그걸 넣었 으면 좋겠다. 감사. – NibblyPig

+0

당신을 진심으로 환영합니다. 질문에 답변으로 표시 할 수 있습니까? –

+0

절대적으로, 다른 열의 조합을 제외하기 위해 롤업을 사용하는 것에 대한 답변을 기다리고 있었지만 실제로 그룹화를 사용하여 그 결과를 찾았습니다. 당신은 대답의 첫 번째 부분만으로도 내 교과서와 인터넷 검색보다 많은 것을 가르쳐 줬기 때문에 교과서를 작성해야합니다! – NibblyPig