GROUPING SETS 설명

SQL 공부

목록 보기
10/11

GROUPING SETS는 SQL에서 여러 그룹화 결과를 한 번의 쿼리로 구할 수 있게 해주는 기능입니다.
이 기능은 다양한 그룹화 조건에 대한 집계 결과를 동시에 계산하는 데 유용합니다.

GROUPING SETS 기본 개념

GROUPING SETS여러 개의 GROUP BY 구문을 하나의 쿼리에서 동시에 수행할 수 있도록 해줍니다.
즉, 서로 다른 집계 수준을 동시에 구할 수 있도록 하여 복잡한 쿼리를 단순화할 수 있습니다.


✅ 예시

예를 들어, sales 테이블에서 productregion에 따른 매출을 구하려고 할 때, 각각의 그룹화뿐만 아니라 전체 매출productregion에 상관없는 합계를 구하고 싶다고 가정합시다.

SELECT 
    product,
    region,
    SUM(sales_amount)
FROM 
    sales
GROUP BY 
    GROUPING SETS (
        (product, region),  -- (product, region)별 합계
        (product),          -- product별 합계
        (region),           -- region별 합계
        ()                  -- 전체 합계
    );

GROUPING SETS 설명

  1. (product, region)productregion을 기준으로 그룹화된 매출 합계를 구합니다.
  2. (product)product만 기준으로 그룹화된 매출 합계를 구합니다.
  3. (region)region만 기준으로 그룹화된 매출 합계를 구합니다.
  4. () — 전체 테이블을 기준으로, 모든 데이터를 합친 합계를 구합니다.

GROUPING SETS의 결과

+---------+---------+-------------------+
| product | region  | SUM(sales_amount)  |
+---------+---------+-------------------+
| A       | North   | 1000              |
| A       | South   | 1500              |
| A       | NULL    | 2500              |  -- product A의 전체 합계
| B       | North   | 800               |
| B       | South   | 1200              |
| B       | NULL    | 2000              |  -- product B의 전체 합계
| NULL    | North   | 1800              |  -- North region의 합계
| NULL    | South   | 2700              |  -- South region의 합계
| NULL    | NULL    | 4500              |  -- 전체 합계
+---------+---------+-------------------+

GROUPING SETS를 사용하는 이유

GROUPING SETS는 여러 집계 조건을 한 번에 처리할 수 있기 때문에, 여러 번 GROUP BY를 사용하는 것보다 성능상 유리하고 코드도 간결해집니다.
또한, ROLLUP이나 CUBE와 비슷한 방식으로 다양한 집계 결과를 쉽게 구할 수 있습니다.


ROLLUPCUBE와의 차이점

  • ROLLUP계층적 집계를 제공하며, 상위 수준의 그룹화 결과를 포함합니다.
    예: (product, region)(product)전체

  • CUBE는 모든 가능한 조합을 포함한 집계 결과를 제공합니다.
    예: (product, region), (product), (region), 전체

  • GROUPING SETS는 명시적으로 원하는 그룹화 집합만 선택할 수 있습니다.
    예: (product, region), (product), (region), 전체


🚀 결론

  • GROUPING SETS는 한 번의 쿼리로 여러 그룹화 조건에 대한 집계 결과를 동시에 구할 수 있게 해주는 SQL 기능입니다.
  • ROLLUPCUBE는 각각 계층적, 모든 가능한 조합의 집계를 제공합니다.
  • GROUPING SETS는 필요한 그룹화 집합만 지정하여 유연하고 효율적으로 집계 결과를 가져올 수 있습니다.
profile
AI 답변 글을 주로 올립니다.

0개의 댓글