ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQL] GROUP BY와 PARTITION BY의 차이점
    데이터베이스 2024. 10. 14. 11:18
    728x90
    반응형

    1. GROUP BY

    • 데이터를 그룹화하여 각 그룹당 하나의 결과를 반환합니다.
    • 그룹화된 각 결과에 대해 집계 함수(SUM, AVG, COUNT 등)가 적용됩니다.
    • GROUP BY를 사용하면 데이터가 그룹별로 집계되어, 원래의 개별 행을 유지하지 않습니다.

    예시:

    SELECT department_id, COUNT(*) AS employee_count
    FROM employees
    GROUP BY department_id;

     

    설명:

    • department_id별로 그룹화하고, 각 부서의 직원 수를 계산합니다.
    • 결과에는 각 부서당 하나의 행만 남습니다. (즉, department_id별로 집계된 결과만 표시)

    2. PARTITION BY

    • 데이터를 특정 기준으로 나누지만, 데이터의 원래 행은 유지합니다.
    • 주로 윈도우 함수(ROW_NUMBER(), RANK(), SUM(), AVG())와 함께 사용되어, 각 그룹 내에서 순위를 매기거나 누적 합계 등을 계산할 때 쓰입니다.
    • PARTITION BY는 그룹별로 집계된 결과를 반환하는 것이 아니라, 개별 행마다 계산된 값을 유지합니다.

    예시:

    SELECT 
        employee_id, 
        department_id, 
        salary, 
        SUM(salary) OVER (PARTITION BY department_id) AS department_total_salary
    FROM employees;

     

    설명:

    • department_id를 기준으로 파티션을 나누고, 각 부서의 총 급여(SUM(salary))를 계산합니다.
    • 그러나 SUM()의 결과는 각 직원의 행에 그대로 유지되며, 각 직원의 급여 정보와 부서의 총 급여가 함께 표시됩니다.
    • 이 경우 PARTITION BY는 데이터를 집계하는 동시에, 각 행에 계산된 값을 반환하는 데 사용됩니다.

    요약:

    • **GROUP BY**는 데이터를 그룹화하여 각 그룹별로 단일 결과를 반환합니다. 집계 후에는 각 그룹당 하나의 결과만 남게 됩니다.
    • **PARTITION BY**는 윈도우 함수와 함께 사용되어, 데이터를 특정 기준으로 나누면서도 각 행의 데이터는 유지한 채로 그룹별 계산을 수행합니다.

    즉, GROUP BY는 데이터를 요약하고 축소하는 데 사용되고, PARTITION BY는 데이터의 원래 형태를 유지하면서 그룹별 계산을 추가하는 데 사용됩니다.

    728x90
    반응형
Designed by Tistory.