토토 결과포스트그레스있습니다 상태 전이 함수로 표현됩니다. 즉, 토토 결과는 수정된 상태의 관점에서 정의될 수 있습니다. 인스턴스가 처리될 때마다. 일부 상태 함수는 다음을 살펴봅니다. 새로운 상태를 계산할 때 인스턴스의 특정 값 (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 |
+------------+