윈도우 함수중급

PARTITION BY

윈도우 함수에서 데이터를 그룹으로 나누는 키워드. GROUP BY와 달리 행을 합치지 않는다.

정의

OVER 절 안에 PARTITION BY 컬럼을 지정하면 해당 컬럼 값이 같은 행끼리 하나의 윈도우로 묶인다. PARTITION BY가 없으면 전체 데이터가 하나의 윈도우다. GROUP BY와 비슷해 보이지만, GROUP BY는 행을 합치고 PARTITION BY는 행을 유지한다는 점이 결정적 차이.

왜 중요한가?

PARTITION BY가 없으면 윈도우 함수는 전체 데이터를 하나의 윈도우로 처리한다. 부서별 순위, 카테고리별 누적합 등 그룹 내 계산이 필요할 때 반드시 지정해야 한다.

틀리기 쉬운 포인트

  • !PARTITION BY를 생략하면 전체 데이터가 하나의 그룹이 됩니다.
  • !PARTITION BY와 GROUP BY를 혼동하면 안 됩니다. PARTITION BY는 원본 행을 유지하고, GROUP BY는 행을 합칩니다.
  • !PARTITION BY에 여러 컬럼을 지정하면 해당 컬럼 조합별로 윈도우가 나뉩니다.

예시

SELECT name, department_id, salary, SUM(salary) OVER(PARTITION BY department_id) AS dept_total
FROM employees;

관련 개념

관련 카테고리