상위 → 하위로 이어지는 구조에서 단계별로 합계를 구하는 것을 의미한다.
예시로 회사 조직 구조를 생각해보자.
이러한 구조에서 각 팀의 매출을 알고 있을 때 다음과 같은 계층적 합계를 구한다는 것은 아래와 같다.
SELECT department, team, SUM(sales)
FROM employees
GROUP BY department, team WITH ROLLUP;
이 쿼리는 다음과 같은 결과를 만든다.
| department | team | SUM(sales) |
|---|---|---|
| A | A1 | 100 |
| A | A2 | 150 |
| A | NULL | 250 ← 부서 A의 합계 |
| B | B1 | 200 |
| B | NULL | 200 ← 부서 B의 합계 |
| NULL | NULL | 450 ← 회사 전체 합계 |
이처럼
이 구조가 계층적 구조이고, 각 단계의 합계가 바로 계층적 합계이다.
| 용어 | 의미 |
|---|---|
| 계층적 구조 | 상위 → 하위 관계가 있는 컬럼들 (예: 연도 > 월, 부서 > 팀) |
| 계층적 합계 | 각 단계별로 누적 합계를 구하는 것 |
ROLLUP(a, b) | a, b → a → 전체 순으로 합계 |