프로그래밍 숲

SQL ROLLUP 연산자 쉽게 이해하기 본문

프로그래밍_인포/데이터베이스&SQL

SQL ROLLUP 연산자 쉽게 이해하기

jjscript 2023. 6. 8. 10:46
728x90
반응형

SQL의 ROLLUP 연산자는 GROUP BY 절과 함께 사용되며, 이를 통해 여러 차원에 대한 합계, 평균, 카운트 등의 데이터 집계가 가능합니다. 간단히 말하면, ROLLUP은 결과 집합의 하위 집합을 생성하고 추가적인 행을 추가하여 이 집합의 합계 또는 다른 집계를 제공합니다

ROLLUP 이름의 의미

"롤업(roll up)"이란 이름은 마치 이러한 계층적 구조를 "롤업"하는 것처럼 생각할 수 있습니다.

ROLLUP은 명시된 그룹화 컬럼의 순서에 따라 작동하며, 이를 통해 다른 수준의 집계 데이터를 제공합니다. 가장 세부적인 수준에서 시작하여 가장 일반적인 수준까지 집계 데이터를 "롤업"하는 것을 나타냅니다.

또한, 이 연산자의 이름은 계층적인 구조를 이루는 데이터를 다루는 방식을 비유적으로 설명하기도 합니다. 가장 하위 수준의 세부 정보를 취합하여 상위 수준의 요약 정보를 생성하는 과정이 마치 캐바스 혹은 블라인드를 롤업하는 것처럼 보일 수 있습니다.

이처럼, ROLLUP이라는 이름은 이 연산자의 기능을 잘 반영하고 있습니다.

ROLLUP 예시

더욱 쉽게 이해하기 위해 예시를 들어 설명해 보도록 하겠습니다.

먼저, 테이블의 구조와 데이터가 다음과 같다고 가정해보겠습니다.

CREATE TABLE Sales (
    Year INT,
    Month INT,
    Amount INT
);

INSERT INTO Sales VALUES
(2022, 1, 100),
(2022, 2, 150),
(2022, 3, 120),
(2023, 1, 200),
(2023, 2, 220),
(2023, 3, 250);

여기서 우리는 연도별, 월별 매출액의 합계를 구하고자 합니다. 이때 ROLLUP을 사용하면 다음과 같이 쿼리를 작성할 수 있습니다:

SELECT Year, Month, SUM(Amount)
FROM Sales
GROUP BY Year, Month WITH ROLLUP;

이 쿼리의 결과는 다음과 같습니다.

Year  | Month | SUM(Amount)
---------------------------
2022  | 1     | 100
2022  | 2     | 150
2022  | 3     | 120
2022  | NULL  | 370  -- 2022년의 합계
2023  | 1     | 200
2023  | 2     | 220
2023  | 3     | 250
2023  | NULL  | 670  -- 2023년의 합계
NULL  | NULL  | 1040 -- 전체 합계

즉, ROLLUP을 사용하면 연도별, 월별 합계 뿐만 아니라 전체 합계까지 한 번에 계산할 수 있습니다. 위에서 NULL은 합계를 나타냅니다.

이처럼 ROLLUP은 매우 유용한 집계 도구입니다. 다만, 결과 해석에 주의해야 하며 NULL 값의 의미를 이해해야 합니다. 이 NULL은 "모든"이라는 의미로 볼 수 있습니다.

728x90
반응형
Comments