Inicio / sql rollup 예제

sql rollup 예제

그룹화 집합은 그룹화 집합 내에서 허용되지 않습니다. 예를 들어 집합그룹별 그룹화(A1, A2,… An, 그룹화 세트 (C1, C2, … Cn)))은 SQL-2006 표준에서 허용되지만 Transact-SQL에서는 허용되지 않습니다. Transact-SQL은 집합(A1, A2,… 그룹별로 그룹화할 수 있도록 합니다. An, C1, C2, … Cn) 또는 그룹별 그룹 집합(A1), (A2), … (안), (C1), (C2), … (Cn))) 첫 번째 GROUP BY 예제와 동일하고 보다 명확한 구문이 있는. 이 예제에서 쿼리는 브랜드와 카테고리 사이에 계층 구조가 있다고 가정합니다.

모든 부서에 속한 모든 남녀 직원의 모든 급여에 대한 총 합계와 함께 부서 및 성별 수준에서 직원 급여의 합계를 하위 합계와 함께 원하는 예를 살펴 보겠습니다. 그것은 모두 당신이 선택할 것 이다 에 필요한 에 따라 달라 집니다. 간단한 규칙은 계층 적 데이터 (예 : state->state->state->city 또는 Department->Manager-Salesman 등)가있는 경우 일반적으로 계층적 결과를 원하고 ROLLUP를 사용하여 데이터를 그룹화한다는 것입니다. 내 마지막 두 게시물에서, 나는 롤업과 큐브와 집계의 예를 주었다 . SQL Server 2008은 계층이 아닌 데이터(예: 도시-성별-국적)가 있는 경우 계층적 결과를 원하지 않으므로 가능한 모든 조합을 제공할 것이므로 CUBE를 사용합니다. 이전 예제의 테이블을 사용하여 이 코드는 간단한 그룹 BY 대신 그룹 BY 롤업 작업을 실행합니다. 이 예제에서 WITH 롤업 수정자를 추가하면 두 연도를 집계하는 추가 행이 추가됩니다. 예를 들어 GROUP BY(), CUBE(국가, 지역))에서 두 요소는 총합계에 대한 행을 반환하고 두 행은 결과에 나열됩니다. 이 문서에서는 간단한 예제를 통해 ROLLUP 및 CUBE 연산자 모두를 살펴보겠습니다. 이것은 우리가 둘 사이의 실질적인 차이점을 볼 수 있습니다 그리고 우리가 그들 각각을 사용해야 할 때. 예를 들어 국가, 주 및 도시의 총 인구를 검색하려는 경우 롤업은 인구를 세 가지 수준으로 합산합니다.

먼저 국가 – 국가 – 도시 수준에서 인구의 합계를 반환합니다. 그런 다음 국가 국가 수준에서 인구를 합산하고 마지막으로 국가 수준에서 인구를 합산할 것입니다. 그것은 또한 총 레벨을 제공 할 것입니다. 선택 목록에 집계가 없는 경우 선택 목록의 각 열이 그룹 BY 목록에 포함되어야 합니다. 선택 목록의 계산된 열을 그룹 BY 목록에 나열할 수 있지만 필수는 아닙니다. 구문적으로 유효한 SELECT 문의 예: 상위 스트림 집계는 ROLLUP를 계산하는 특수 집계입니다. 그러나 SQL Server 2005에서는 이 집계가 ROLLUP를 구현하는 쿼리 계획에서 식별할 수 있는 방법이 없습니다.