이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.무지개 토토 PostgreSQL : 문서 : 17 : 36.12. 사용자 정의 골재버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

42장. 확장SQL: 윈 토토

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