이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다현재버전 또는 위에 나열된 다른 지원되는 버전 중 하나입니다.

42 장 확장SQL: 골재

윈 토토에서Postgresare 상태 전이 기능 측면에서 표현됩니다. 즉, an 윈 토토는 수정 된 상태로 정의 될 수 있습니다. 인스턴스가 처리 될 때마다 일부 상태 기능은 a를 봅니다 새 상태를 계산할 때 인스턴스의 특정 값 (sfunc1생성 윈 토토에서 구문) 다른 사람들은 자신의 내부 상태 만 추적합니다. (sfunc2). 윈 토토를 정의하면 만 사용sfunc1, 우리는 an을 정의합니다 속성 값의 실행중인 함수를 계산하는 집계 각 인스턴스에서. "Sum"은 이런 종류의 집계의 예입니다. "Sum"은 0에서 시작하여 항상 현재 인스턴스의 값을 추가합니다. 런닝 총계까지. 우리는를 사용할 것입니다.int4pl그게 내장Postgres이 추가를 수행하려면

집계 complex_sum 만들기 (
    sfunc1 = complex_add,
    BaseType = Complex,
    stype1 = complex,
    initcond1 = '(0,0)'
);

test_complex에서 complex_sum (a)을 선택하십시오.

         +------------+
         | complex_sum |
         +------------+
         | (34,53.9) |
         +-----------+

만 정의하면sfunc2, 우리는입니다 실행중인 작동 함수를 계산하는 윈 토토를 지정합니다. 각 인스턴스의 속성 값과 무관합니다. "카운트"입니다 이런 종류의 윈 토토의 가장 일반적인 예. "카운트"가 시작됩니다 0에서 각 인스턴스에 대해 1 개를 추가합니다. 인스턴스 값을 무시합니다. 여기에서 우리는 내장을 사용합니다int4inc우리를 위해 일하는 일상. 이것 일상적인 증가 (하나에 추가) 인수.

집계 생성 my_count (
    sfunc2 = int4inc, - 하나를 추가하십시오
    BaseType = int4,
    stype2 = int4,
    initcond2 = '0'
);

emp에서 emp_count로 my_count (*)를 선택하십시오.

         +----------+
         | emp_count |
         +----------+
         | 5 |
         +----------+

"평균"은 둘 다 필요한 윈 토토의 예입니다. 실행중인 합계와 계산하는 함수를 계산하는 함수 런닝 카운트. 모든 인스턴스가 처리되면 윈 토토에 대한 최종 답변은 달리기 합계가 런닝 카운트. 우리는를 사용합니다.int4plandint4inc이전에 사용한 루틴 뿐만 아니라Postgres정수 부서 루틴,int4div, 계산 카운트에 의한 합계의 분할.

집계 생성 my_average (
    sfunc1 = int4pl, - sum
    BaseType = int4,
    stype1 = int4,
    sfunc2 = int4inc, - count
    stype2 = int4,
    finalfunc = int4div, - 부서
    initcond1 = '0',
    initcond2 = '0'
);

emp에서 emp_average로 my_average (Salary)를 선택하십시오.

         +------------+
         | emp_average |
         +------------+
         | 1640 |
         +-----------+