postgresql - aggregate function, window function의 비교

 aggregate function(집계 함수)

집계를 도와주는 함수.

집계 결과가 1개의 row에 나타난다.

avg(salary)


window function(윈도우 함수)

집계를 도와주는 함수.

각 row단위 마다 결과를 보여준다.


윈도우 함수 뒤에는 항상 OVER 절을 사용한다. 

이 규칙은 이 함수가 윈도우 함수로 처리할 것인지, 그렇지 않을 것인지를 구분하는 문법상 규칙이다.

 

네번째 칼럼은 depname 칼럼 값을 기준으로 그룹화된 자료의 평균값을 각 로우마다 보여준다.


OVER 절에는 윈도우 함수의 계산 대상이 되는 로우들을 집합화하는 방법을 정의한다. 


PARTITION BY로 정의하는 목록은 같은 그룹인지, 다른 그룹인지 구분하는 기준으로 사용되고, 

같은 그룹 내에서는 현재 로우 값도 포함해서 계산 된 윈도우 함수의 결과값을 공유한다.


SELECT depname, empno, salary, avg(salary) OVER (PARTITION BY depname) FROM empsalary;


empsalary 테이블에서 

depname 기준으로 그룹화하여 OVER (PARTITION BY depname) 

depname, empno, salary, avg(salary) 값을 조회한다. -> 그룹화된 자료들의 평균값인 avg(salary)


PostgreSQL에서는 Aggregate function을 만들고, aggregate function을 window function처럼 사용할 수 있다.


윈도우 프레임 조절 및 자세한 원리는 자습서 참조.

https://postgresql.kr/docs/9.5/tutorial-window.html



댓글

이 블로그의 인기 게시물

실무진 면접 경험으로 정리하는 백엔드 (1) : 에듀 테크 기업 면접

노마드코더 개발자북클럽 Clean code TIL 6 : 6장. 객체와 자료구조

백엔드 개발자가 Djnago fullstack 사이드 프로젝트를하며 ( html, css, vanillaJS 그리고 JS프레임워크 )