윈 토토포스트그레스있습니다 상태 전이 함수로 표현됩니다. 즉, 윈 토토는 수정된 상태의 관점에서 정의될 수 있습니다. 인스턴스가 처리될 때마다. 일부 상태 함수는 다음을 살펴봅니다. 새로운 상태를 계산할 때 인스턴스의 특정 값 (sfunc1생성 집합체에서 구문) 다른 사람들은 자신의 내부 상태만 추적합니다. (sfunc2). 윈 토토를 정의하면 만 사용하는 것sfunc1, 우리는 속성 값의 실행 함수를 계산하는 윈 토토 각 인스턴스에서. "Sum"은 이러한 윈 토토의 예입니다. "합계"는 0부터 시작하여 항상 현재 인스턴스의 값을 더합니다. 누계에 추가됩니다. 우리는int4pl내장되어 있음포스트그레스이 추가를 수행합니다.
집합 complex_sum 생성(
sfunc1 = complex_add,
기본 유형 = 복합,
유형1 = 복합,
initcond1 = '(0,0)'
);
SELECT complex_sum(a) FROM test_complex;
+------------+
|복합체_합 |
+------------+
|(34,53.9) |
+------------+
만 정의한다면sfunc2, 우리는 실행 중인 함수를 계산하는 윈 토토를 지정합니다. 각 인스턴스의 속성 값과 무관합니다. "카운트"는 이런 종류의 윈 토토의 가장 일반적인 예입니다. "카운트"가 시작됩니다 0에서 각 인스턴스의 누계에 1을 더합니다. 인스턴스 값을 무시합니다. 여기서는 내장을 사용합니다.int4inc우리를 위해 일을 하는 루틴입니다. 이 루틴은 인수를 증가(1을 추가)합니다.
윈 토토 my_count 생성(
sfunc2 = int4inc, -- 하나 추가
기본 유형 = int4,
stype2 = int4,
initcond2 = '0'
);
EMP에서 emp_count로 my_count(*)를 선택합니다.
+----------+
|emp_count |
+----------+
|5 |
+----------+
"평균"은 두 가지 모두가 필요한 윈 토토의 예입니다. 누계를 계산하는 함수와 합계를 계산하는 함수 실행 횟수. 모든 인스턴스가 처리되면 윈 토토에 대한 최종 답은 누계를 다음으로 나눈 값입니다. 실행 횟수. 우리는int4pl그리고int4inc우리가 이전에 사용했던 루틴은 뿐만 아니라포스트그레정수 분할 루틴,int4div, 계산하다 합계를 개수로 나누는 것입니다.
윈 토토 my_average 생성(
sfunc1 = int4pl, -- 합계
기본 유형 = int4,
유형1 = int4,
sfunc2 = int4inc, -- 개수
stype2 = int4,
finalfunc = int4div, -- 나누기
initcond1 = '0',
initcond2 = '0'
);
EMP에서 emp_average로 my_average(salary)를 선택합니다.
+------------+
|emp_평균 |
+------------+
|1640 |
+------------+