이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다범퍼카 토토 PostgreSQL : 문서 : 17 : 36.12. 사용자 정의 골재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

12 장. 확장SQL: 골재

집계 함수스포츠 토토 사이트상태 값and상태 전환 기능. 즉, 골재는 정의 될 수 있습니다 입력 항목이있을 때마다 수정 된 상태 약관 가공. 새로운 집계 함수를 정의하려면 데이터를 선택합니다. 상태 값에 대한 유형, 상태의 초기 값 및 상태 전환 기능. 상태 전환 기능은 정당합니다 컨텍스트 외부에서도 사용할 수있는 일반 기능 집계의. 에이최종 기능can 또한 응집체의 원하는 출력이 실행 중에 유지 해야하는 데이터와 다릅니다. 상태 가치.

따라서, 입력 및 결과 데이터 유형 외에 집계 사용자, 내부 상태 가치 데이터 유형이 있습니다. 입력 및 결과 유형과 다를 수 있습니다.

최종 함수를 사용하지 않는 집계를 정의하면 우리는 각 행에서 열 값.Sumis 이런 종류의 집계의 예.Sum0에서 시작하여 항상 전류를 추가합니다 Row의 가치가 달리는 총계. 예를 들어, 우리가 만들고 싶다면 에이Sum데이터 작업을위한 집계 복소수에 대한 유형, 추가 기능 만 필요합니다. 해당 데이터 유형. 집계 정의는 다음과 같습니다.

집계 complex_sum 만들기 (
    sfunc = complex_add,
    BaseType = Complex,
    stype = complex,
    initcond = '(0,0)'
);
test_complex에서 complex_sum (a)을 선택하십시오.

 complex_sum
-------------
 (34,53.9)

(실제로는 집계의 이름을 지정합니다SumPostgreSQL어떤 종류의 합계를 파악하려면 유형의 열에 적용하려면복잡한.)

위의 정의Sum의지 없는 경우 0 (초기 상태 조건)을 반환합니다. 비 널 입력 값. 아마도 우리는 그 안에서 Null을 반환하고 싶을 것입니다 대신 사례 --- SQL 표준이 기대Sum그렇게 행동합니다. 우리는 이것을 간단하게 할 수 있습니다 생략함으로써Initcond문구 초기 상태 조건은 널입니다. 일반적으로 이것은 의미합니다 그게sfunca 널 상태 조건 입력이지만Sum|maxandMin, 첫 번째 삽입으로 충분합니다 상태 변수에 대한 널 입력 값이없는 다음 시작합니다. 두 번째 비 널 입력에서 전환 기능을 적용합니다 값.PostgreSQL그렇게 할 것입니다 초기 조건이 null이고 전환이 자동으로 함수는 표시"엄격한"(즉, 그렇지 않습니다 널 입력을 요청 받으려면).

A에 대한 또 다른 기본 동작"엄격한"전이 함수는 이전입니다 널 입력 값이있을 때마다 상태 값이 변경되지 않습니다. 만난. 따라서 널 값은 무시됩니다. 필요하다면 널 입력에 대한 다른 동작은 전환을 정의합니다 비 강도로 기능하고 널 입력을 테스트하기 위해 코드를 코딩하고 필요한 모든 것을하십시오.

avg(평균)는 더 복잡합니다 집계의 예. 두 개의 러닝 상태가 필요합니다. 입력의 합 및 입력 수의 수. 그만큼 최종 결과는 이러한 수량을 나누어 얻습니다. 평균입니다 일반적으로 2 요소 배열을 사용하여 구현합니다 전환 상태 값. 예를 들어, 내장 구현 의avg (float8)모양 :

골재 생성 AVG (
    sfunc = float8_accum,
    BaseType = float8,
    stype = float8 [],
    finalfunc = float8_avg,
    initcond = '0,0'
);

자세한 내용은 설명을 참조하십시오.집계 생성참조 설명서.