[SQL] OVER(PARTITION BY ... ORDER BY ...)

bamboocoding·2024년 8월 10일

<직원 테이블>

위의 테이블을 예제로 OVER(PARTITION BY)와 OVER(PARTITION BY... ORDER BY...)의 차이점을 알아보자.

select emp_no, emp_name, dept_code, salary,
sum(salary) over(partition by dept_code) as 부서급여합
from employee
where dept_code in ('B', 'D');


직원 테이블에서 부서별 코드(dept_code)가 B, D인 직원들의 정보를 조회하는데,
sum(salary) over(partition by dept_code)로 부서별로 연봉의 합계를 나타낸다.

select emp_no, emp_name, dept_code, salary,
sum(salary) over(partition by dept_code order by emp_no) as 부서급여합
from employee
where dept_code in ('B', 'D');


sum(salary) over(partition by dept_code order by emp_no)
여기서는 ORDER BY emp_np가 추가되었다.
부서별로 구분하고 emp_no 오름차순으로 데이터를 정렬한다.
이 후 salary의 누적 합계를 계산한다.

profile
배운 것을 기록하는 습관을 길들이자.

0개의 댓글