프로그래밍 숲

SQL GROUPING SETS 쉽게 이해하기 본문

카테고리 없음

SQL GROUPING SETS 쉽게 이해하기

jjscript 2023. 6. 12. 10:59
728x90
반응형

GROUPING SETS란?

GROUPING SETS는 SQL에서 데이터를 다양한 그룹화 수준에서 집계하는 기능을 제공하는 절입니다. 일반적으로 GROUP BY 절과 함께 사용되며, 그룹화된 결과를 여러 그룹화 조합에 대해 한 번에 반환할 수 있습니다. 이를 통해 다양한 관점에서 데이터를 분석하고 비교할 수 있습니다.

GROUPING SETS는 여러 그룹화 열의 조합을 지정하는 방식으로 사용됩니다. 이러한 조합은 GROUP BY 절 내에 괄호로 묶어 나열됩니다. 각 그룹화 조합은 쉼표로 구분되며, 괄호 안에 그룹화할 열을 나열합니다.

예시

다음과 같은 Sales 테이블이 있다고 가정해 봅시다.

| Product | Category | Region | Amount |
|---------|----------|--------|--------|
| A       | X        | East   | 100    |
| B       | X        | West   | 200    |
| C       | Y        | East   | 150    |
| A       | Y        | West   | 300    |

이 테이블에서 Product, Category, Region에 대한 그룹화를 수행하고 Amount를 합계로 집계해보겠습니다. 기존의 GROUP BY 절로는 다음과 같이 그룹화할 수 있습니다.

SELECT Product, Category, Region, SUM(Amount)
FROM Sales
GROUP BY Product, Category, Region;
| Product | Category | Region | SUM(Amount) |
|---------|----------|--------|-------------|
| A       | X        | East   | 100         |
| B       | X        | West   | 200         |
| C       | Y        | East   | 150         |
| A       | Y        | West   | 300         |

이제 grouping sets를 사용하여 다양한 그룹화 조합을 가져와 보겠습니다. grouping sets는 GROUP BY 절 내에 여러 그룹화 열을 나열하여 사용됩니다.

SELECT Product, Category, Region, SUM(Amount)
FROM Sales
GROUP BY GROUPING SETS ((Product, Category, Region), (Product, Category), (Product), ());

위의 쿼리는 4개의 그룹화 조합을 생성합니다.

1. (Product, Category, Region): 모든 열을 그룹화하여 결과를 반환합니다.
2. (Product, Category): Product와 Category 열을 그룹화하여 결과를 반환합니다.
3. (Product): Product 열만 그룹화하여 결과를 반환합니다.
4. (): 그룹화를 수행하지 않고 모든 행을 하나의 그룹으로 반환합니다.

 

| Product | Category | Region | SUM(Amount) |
|---------|----------|--------|-------------|
| A       | X        | East   | 100         |
| A       | Y        | West   | 300         |
| B       | X        | West   | 200         |
| C       | Y        | East   | 150         |
| A       | X        | NULL   | 100         |
| A       | Y        | NULL   | 300         |
| B       | X        | NULL   | 200         |
| C       | Y        | NULL   | 150         |
| A       | NULL     | NULL   | 400         |
| B       | NULL     | NULL   | 200         |
| C       | NULL     | NULL   | 150         |
| NULL    | NULL     | NULL   | 750         |

위 결과에서 볼 수 있듯이, grouping sets를 사용하면 다양한 그룹화 조합의 결과를 한 번에 얻을 수 있습니다. 추가적으로 그룹화된 결과에 대한 합계 또는 기타 계산을 수행할 수도 있습니다. 이를 통해 데이터의 다양한 관점에서 집계 결과를 분석할 수 있습니다.

728x90
반응형
Comments