PostgreSQL에서 윈도우 함수를 사용하여 누적합 계산
질문:
목표 테이블에 삽입해야 하는 재무 데이터와 누적 합계가 포함된 스테이징 테이블이 있습니다. 스테이징 테이블 구조에는 다음 열이 포함되어 있습니다.
ea_month
: 월 id
: 고유 식별자 amount
: 거래금액ea_year
: 연도 circle_id
: 거래 관련 동아리 대상 테이블에는 각 행의 누적 금액을 반영하는 추가 열cum_amt
이 포함되어야 합니다.
해결책:
이를 위해 PostgreSQL의 창 기능 기능을 사용하면 다양한 행에 대해 계산을 수행할 수 있습니다. 특히 OVER
절을 사용하여 정의된 창(이 경우 SUM
) 내에서 집계 함수를 적용할 수 있습니다.
<code class="language-sql">SELECT ea_month, id, amount, ea_year, circle_id, sum(amount) OVER (PARTITION BY circle_id ORDER BY ea_year, ea_month) AS cum_amt FROM tbl ORDER BY circle_id, ea_year, ea_month;</code>
이 쿼리에서:
PARTITION BY circle_id
: circle_id
을 기준으로 데이터를 그룹으로 나누고 누적 합계가 각 원에 대해 별도로 계산되는지 확인합니다. ORDER BY ea_year, ea_month
: 각 파티션 내의 정렬 순서를 지정하여 누적 합계가 시간순으로 계산되도록 합니다. cum_amt
: aggregationSUM
표현식은 파티션 시작부터 현재 행까지 모든 행을 고려하여 각 행의 누적 합계를 계산합니다. 참고: 올바른 계산 그룹화를 보장하려면 테이블 쌍(circle_id
, ea_year
, ea_month
)에 고유 인덱스가 있는지 확인하세요. 이렇게 하면 동일한 circle_id
, ea_year
및 ea_month
이 있는 행이 항상 정렬된 순서로 함께 표시됩니다.
윈도우 함수 기법을 이용하면 각 행의 누적합을 효율적으로 계산하여 대상 테이블에 삽입할 수 있습니다.
위 내용은 창 함수를 사용하여 PostgreSQL에서 누적 합계를 어떻게 계산할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!