Window Function 다시 이해하기: row를 줄이지 않고, 현재 row의 문맥을 계산한다

SQL에서 GROUP BY를 쓰면 여러 row가 하나의 그룹으로 접힌다. 예를 들어 고객별 매출 합계를 구하면 고객마다 하나의 row만 나온다. 반면 window function은 원래 결과 row를 그대로 유지한다. 그리고 각 row에 대해 “이 row가 속한 문맥에서 계산한 값”을 옆에 붙여준다. Oracle 문서는 window function을 다음처럼 설명한다. A window function combines aggregate, ranking, or analytic functions with an over-clause for windowed calculations. 즉 window function은 크게 보면 다음 구조다. (Oracle Docs) ...

May 27, 2026 · j9m.dev

PostgreSQL Window Functions

postgres-window-functions 이 글은 PostgreSQL 18 문서 기준으로 적는다. PostgreSQL 문서의 current 링크는 시간이 지나면 다른 버전을 가리킬 수 있으므로, 여기서는 일부러 /docs/18/ 링크를 기준으로 본다. PostgreSQL의 Window Function 문서를 다시 읽어보면 첫인상은 조금 밋밋하다. Oracle Window Function 문서를 먼저 보고 오면 특히 그렇다. Oracle 쪽 문서는 aggregate_function, ranking_function, analytic_function, over_clause, partition_by_clause, order_by_clause, frame_clause를 비교적 직접적으로 나눠 설명한다. (Oracle Docs) 반면 PostgreSQL의 functions-window 문서는 꽤 짧다. row_number, rank, dense_rank, percent_rank, cume_dist, ntile, lag, lead, first_value, last_value, nth_value 같은 내장 Window Function 목록을 보여주고, 일반 aggregate function도 OVER 절이 붙으면 Window Function처럼 동작할 수 있다고 설명하는 정도다. (PostgreSQL) ...

May 27, 2026 · j9m.dev