집계 함수 + OVER()

부서별 통계는 한 번 계산하고, 같은 부서의 모든 행에 그대로 붙습니다.

PARTITION BY department는 직원 행을 부서 단위 윈도우로 나눈 뒤 SUM, AVG, MAX, MIN을 계산합니다. 중요한 점은 결과가 부서당 한 행으로 줄어드는 것이 아니라, 원래 직원 행마다 다시 보인다는 것입니다.

SUM(salary) OVER (PARTITION BY department)
1. 원본 행은 그대로 남음
2. 부서 파티션 안에서 집계
3. 집계 결과가 각 행에 반복 부착
개발 부서
김철수salary 5000
이영희salary 4000
박지민salary 3000

개발 파티션에서 한 번 계산

5000 + 4000 + 3000을 같은 윈도우로 보고 통계를 만듭니다.

SUM12000
AVG4000
MAX / MIN5000 / 3000
김철수5000
dept_total12000 dept_avg4000 dept_max5000 dept_min3000
이영희4000
dept_total12000 dept_avg4000 dept_max5000 dept_min3000
박지민3000
dept_total12000 dept_avg4000 dept_max5000 dept_min3000
기획 부서
정유진salary 6000
한도현salary 5000

기획 파티션도 별도로 계산

부서가 달라지면 윈도우도 달라지므로 통계가 섞이지 않습니다.

SUM11000
AVG5500
MAX / MIN6000 / 5000
정유진6000
dept_total11000 dept_avg5500 dept_max6000 dept_min5000
한도현5000
dept_total11000 dept_avg5500 dept_max6000 dept_min5000