토토 결과 생성이름(BaseType =input_data_type, sfunc =sfunc, stype =state_type[, finalfunc =ffunc] [, initcond =Initial_Condition])
집계의 이름 (선택적으로 스키마 자격) 생성 할 기능.
이 집계 기능의 입력 데이터 유형
작동합니다. 이것은로 지정할 수 있습니다."Any"그렇지 않은 집계의 경우
입력 값을 검사하십시오 (예는count (*)
).
각 입력 데이터 값에 대해. 이것은 일반적으로의 함수입니다 두 가지 주장, 첫 번째 유형State_type그리고 두 번째 유형input_data_type. 대안 적으로, 그것의 검사를하지 않는 집계 입력 값, 함수는 하나의 인수 만 가져옵니다 유형state_type. ~ 안에 어떤 경우, 함수는 유형의 값을 반환해야합니다state_type. 이 기능 현재 상태 값과 현재 입력 데이터를 취합니다. 항목, 다음 상태 값을 반환합니다.
토토 결과 상태 값의 데이터 유형.
모든 입력 데이터가 발생한 후 집계 결과 가로. 함수는 하나의 논증을 취해야합니다 유형state_type. 그만큼 토토 결과의 출력 데이터 유형은 이 기능의 반환 유형. 만약에ffunc지정되지 않은 다음 결말 상태 가치는 집계 결과로 사용되며 출력 유형은입니다.state_type.
상태 값의 초기 설정. 이것은해야합니다 데이터 유형에 대해 허용되는 양식의 문자 상수State_type. 그렇지 않다면 지정된 상태 가치는 NULL에서 시작합니다.
토토 결과 생성사용자 또는 허용합니다
확장 할 프로그래머PostgreSQL새로운 토토 결과 함수를 정의하여 기능. 일부 토토 결과
와 같은 기본 유형의 함수min (정수)
andAVG (Double Precision)
이미 제공되었습니다
기본 분포. 새로운 유형을 정의하거나 필요한 경우
아직 제공되지 않은 토토 결과 기능토토 결과 생성를 제공하는 데 사용될 수 있습니다
원하는 기능.
스키마 이름이 제공되는 경우 (예 :토토 결과 생성 myschema.myagg ...) 그런 다음 집계 기능은 지정된 스키마에서 생성됩니다. 그렇지 않으면 현재 스키마에서 생성됩니다 (전면 앞 스키마 검색 경로; 보다current_schema ()).
집계 함수는 이름 및 입력 데이터로 식별됩니다. 유형. 동일한 스키마의 두 집계가 동일한 이름을 가질 수 있습니다. 그들은 다른 입력 유형에서 작동합니다. 이름 및 입력 데이터 집계의 유형은 이름과도 구별되어야하며 모든 일반 기능의 입력 데이터 유형이 동일하게 개요.
토토 결과 함수는 하나 또는 두 개의 일반에서 만들어집니다. 함수 : 상태 전환 기능sfunc및 선택적 최종 계산 기능ffunc. 이것들은 다음과 같이 사용됩니다 다음은 다음과 같습니다.
sfunc(내부 상태, 차세대 자산) --- 다음 내부 상태ffunc(내부 상태) --- 토토 결과 값
PostgreSQL생성 a 데이터 유형의 임시 변수Stype현재 내부 상태를 유지합니다 집계. 각 입력 데이터 항목에서 상태 전환 새로운 내부 상태 값을 계산하기 위해 함수가 호출됩니다. 모든 데이터가 처리 된 후 최종 기능은 집계의 출력 값을 계산하기 위해 한 번 호출했습니다. 거기 있다면 최종 기능이 없으면 종료 상태 값이 반환됩니다. 있는 그대로.
토토 결과 함수는 초기 조건을 제공 할 수 있습니다 내부 상태 값의 초기 값입니다. 이것은 데이터베이스에 유형 필드로 지정되고 저장텍스트이지만 유효한 외부 여야합니다 상태 가치 데이터 유형의 상수 표현. 만약 공급되지 않으면 상태 가치가 시작됩니다.
상태 전환 함수가 선언 된 경우"엄격한", 그런 다음 NULL로 호출 할 수 없습니다
입력. 이러한 전환 기능을 사용하면 집계 실행
다음과 같이 동작합니다. 널 입력 값이 무시됩니다 (함수
호출되지 않고 이전 상태 값이 유지됩니다). 만약
초기 상태 값은 NULL이면 최초의 비 널 입력 값입니다.
상태 값을 대체하면 전환 기능이 호출됩니다.
두 번째 비 널 입력 값으로 시작합니다. 이것은 편리합니다
와 같은 집계 구현max
.
이 동작은에만 사용할 수 있습니다.state_type|input_data_type. 이러한 유형이있을 때
다르면, 당신은 null이 아닌 초기 조건을 제공하거나 사용해야합니다.
비 강력한 전환 기능.
상태 전환 기능이 엄격하지 않으면 각 입력 값에서 무조건적으로 호출되며 널 입력 및 널 전환 값 자체. 이것은 허용합니다 집계 제자가 집계를 완전히 제어 할 수 있습니다. 널 값 처리.
최종 함수가 선언 된 경우"엄격한"결말 상태 값은 널입니다. 대신 널 결과가 출력됩니다
자동으로. (물론 이것은 단지 정상적인 행동입니다
엄격한 함수.) 어쨌든 최종 기능에는 옵션이 있습니다.
귀환 널의. 예를 들어,의 최종 기능avg
거기에서 볼 때 NULL을 반환합니다
입력 튜플이 제로였습니다.