일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- SQL
- dom
- JavaScript
- 비절차적 데이터 조작어
- ROLLUP
- SQLD
- execute immediate
- 뷰
- 자료구조
- 정보처리기사
- git
- sql 저장 모듈
- Oracle
- html
- GROUPING
- 문법 차이
- MYSQL
- 정규식 연산
- show graph characteristics
- 코드 스니펫
- simple case expression
- python
- list multiplication
- dense rank
- Node.js
- 위코드
- coalesce
- searched case expression
- window 함수
- 기업 협업
- Today
- Total
프로그래밍 숲
SQL GROUPING SETS 쉽게 이해하기 본문
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를 사용하면 다양한 그룹화 조합의 결과를 한 번에 얻을 수 있습니다. 추가적으로 그룹화된 결과에 대한 합계 또는 기타 계산을 수행할 수도 있습니다. 이를 통해 데이터의 다양한 관점에서 집계 결과를 분석할 수 있습니다.