GROUP BY vs WINDOW

GROUP BY는 행을 접고, 윈도우 함수는 행을 유지한다

같은 부서 평균을 계산해도 결과 집합의 모양이 다릅니다. GROUP BY는 부서별 한 행만 남기고, 윈도우 함수는 각 직원 행 옆에 평균을 붙입니다.

employees 입력 직원 5명이 부서와 급여를 가진 원본 행입니다. 5 rows
GROUP BY dept 같은 dept 행을 하나로 접고 평균만 남깁니다. 5 → 2 rows
윈도우 함수 행은 그대로 두고 부서 평균 컬럼을 추가합니다. 5 → 5 rows
입력 테이블 employees 5 rows
emp dept salary
E01 개발 7000
E02 개발 6200
E03 개발 6000
E04 영업 5600
E05 영업 4800
GROUP BY 결과 직원 행은 접힘
SELECT dept, AVG(salary) AS dept_avg
FROM employees
GROUP BY dept;
dept dept_avg 남지 않는 값
개발 6400 E01, E02, E03
영업 5200 E04, E05
윈도우 함수 결과 직원 행 유지
SELECT emp, dept, salary,
       AVG(salary) OVER (
         PARTITION BY dept
       ) AS dept_avg
FROM employees;
emp dept salary dept_avg
E01 개발 7000 6400
E02 개발 6200 6400
E03 개발 6000 6400
E04 영업 5600 5200
E05 영업 4800 5200
직원별 급여도 보고 부서 평균도 함께 봐야 한다면 GROUP BY가 아니라 AVG(...) OVER (...)를 쓴다.