본문 바로가기
Big Data/Database

GROUP BY와 ROLL UP

by Wikinist 2023. 7. 26.

ROLL UP은 GROUP BY 절과 함께 사용되는 데이터베이스의 집계(Aggregation) 기능 중 하나로, 계층적인 합계 정보를 생성하는데 사용됩니다. GROUP BY 절은 특정 컬럼의 값을 기준으로 데이터를 그룹화하고, 집계 함수를 사용하여 각 그룹의 합계, 평균, 카운트 등을 계산합니다. ROLL UP은 GROUP BY의 확장된 기능으로, GROUP BY로 생성한 그룹화 결과를 계층적으로 확장하여 다양한 레벨의 합계 정보를 얻을 수 있도록 합니다.

ROLL UP을 사용하면, GROUP BY로 생성된 그룹화 결과에 대해 각 레벨별로 합계 정보를 보여줄 수 있습니다. 즉, 여러 컬럼의 그룹화를 한 번에 수행하고, 그룹화된 결과에 대해 여러 레벨의 집계 값을 동시에 확인할 수 있습니다.

ROLL UP의 구문은 다음과 같습니다:

SELECT column1, column2, ..., columnN, aggregate_function(column)
FROM table_name
GROUP BY ROLLUP(column1, column2, ..., columnN);

위의 구문에서 column1, column2, ..., columnN은 GROUP BY로 그룹화할 컬럼들을 의미하며, aggregate_function은 해당 그룹에 대해 적용할 집계 함수를 나타냅니다. GROUP BY ROLLUP 절을 사용하면, 해당 컬럼들로 그룹화된 각 레벨별로 합계 정보가 반환됩니다.

예를 들어, 다음과 같은 테이블이 있다고 가정해보겠습니다.

Sales table:

| Region   | Category | Sales |
|----------|----------|-------|
| East     | A        | 100   |
| East     | B        | 150   |
| West     | A        | 200   |
| West     | B        | 120   |

위의 테이블에서 Region과 Category 컬럼으로 GROUP BY ROLLUP을 수행하면 다음과 같은 결과를 얻을 수 있습니다.

SELECT Region, Category, SUM(Sales) AS TotalSales
FROM Sales
GROUP BY ROLLUP(Region, Category);

결과:

| Region   | Category | TotalSales |
|----------|----------|------------|
| East     | A        | 100        |
| East     | B        | 150        |
| East     | NULL     | 250        |
| West     | A        | 200        |
| West     | B        | 120        |
| West     | NULL     | 320        |
| NULL     | NULL     | 570        |

위 결과에서 Region과 Category로 그룹화된 합계 정보뿐만 아니라, NULL 값을 가진 레코드들도 포함하여 레벨별 합계 정보를 얻을 수 있습니다. NULL 값의 경우는 해당 레벨에서의 전체 합계를 나타냅니다. 즉, Region 또는 Category 레벨에서의 전체 합계를 구할 수 있습니다.

ROLL UP은 여러 레벨의 집계 정보를 한 번에 조회할 수 있어 다차원적인 데이터 분석에 유용하게 활용될 수 있습니다.

해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.

'Big Data > Database' 카테고리의 다른 글

공통 테이블 표현식(CTE)  (0) 2023.07.26
서브쿼리를 이용한 뷰 생성 및 사용 예제  (0) 2023.07.26
NULL 처리 함수  (0) 2023.07.26
NULL과 연산  (0) 2023.07.26
서브쿼리의 유형  (0) 2023.07.25