토토 베이 생성이름(input_data_type[, ...]) (
sfunc =sfunc,
stype =state_data_type[, finalfunc =ffunc]
[, initcond =Initial_Condition]
[, sortop =Sort_Operator]
)또는 기존 구문토토 베이 생성이름(
BaseType =base_type,
sfunc =sfunc,
stype =state_data_type[, finalfunc =ffunc]
[, initcond =Initial_Condition]
[, sortop =sort_operator]
)
토토 베이 생성새를 정의합니다 토토 베이 기능. 일부 기본적이고 일반적으로 사용되는 토토 베이 기능은 분포에 포함됩니다. 그들은 문서화됩니다 안에PostgreSQL : 문서 : 9.3 : 토토 커뮤니티 함수. 하나라면 새로운 유형을 정의하거나 아직없는 토토 베이 함수가 필요합니다. 제공,토토 베이 생성할 수 있습니다 원하는 기능을 제공하는 데 사용됩니다.
스키마 이름이 주어진 경우 (예 :토토 베이 생성 myschema.myagg ...) 그런 다음 집계 기능은 지정된 스키마에서 생성됩니다. 그렇지 않으면 현재 스키마에서 생성됩니다.
집계 함수는 이름 및 입력 데이터로 식별됩니다. 타입. 동일한 스키마의 두 집계가 동일한 이름을 가질 수 있습니다. 다른 입력 유형에서 작동하는 경우. 이름 및 입력 데이터 집계의 유형은 또한 이름과 구별되어야하며 모든 일반 기능의 입력 데이터 유형이 동일하게 개요.
토토 베이 함수는 하나 또는 두 개의 일반에서 만들어집니다. 함수 : 상태 전환 기능sfunc및 선택적 최종 계산 기능ffunc. 이것들은 다음과 같이 사용됩니다 다음은 다음과 같습니다.
sfunc(내부 상태, 차세대-값) --- 다음 내부 상태ffunc(내부 상태) --- 토토 베이 값
PostgreSQL임시를 만듭니다 데이터 유형 변수Stype골재의 현재 내부 상태. 각 입력 행에서 집계 인수 값 (들)이 계산되고 상태 전환이 계산됩니다 현재 상태 값과 새로운 기능으로 기능이 호출됩니다. 새로운 내부 상태 값을 계산하는 인수 값. 후에 모든 행이 처리되었고 최종 기능이 호출됩니다. 한 번 집계의 반환 값을 계산합니다. 없다면 최종 함수 그러면 종료 상태 값이 반환됩니다.
토토 베이 함수는 초기 조건을 제공 할 수 있습니다. 내부 상태 값의 초기 값. 이것은 지정됩니다 데이터베이스에 유형의 값으로 저장텍스트그러나 유효한 외부 표현이어야합니다. 상태 가치 데이터 유형의 상수. 공급되지 않으면 상태 가치가 시작됩니다.
상태 전환 함수가 선언 된 경우"엄격한", 널 입력으로 호출 할 수 없습니다.
이러한 전환 기능을 사용하면 집계 실행이 동작합니다
다음. 널 입력 값이있는 행은 무시됩니다 (함수
호출되지 않고 이전 상태 값이 유지됩니다). 만약
초기 상태 값은 NULL이고 All-Nonnull이있는 첫 번째 행에서
입력 값, 첫 번째 인수 값은 상태 값을 대체하고
전환 기능은 다음 행에서 호출됩니다.
All-Nonnull 입력 값. 이것은 집계를 구현하는 데 편리합니다
좋다max
. 이 행동은
만 사용할 수 있습니다state_data_type첫 번째와 동일합니다input_data_type. 이러한 유형이있을 때
다른 경우, 당신은 비 unnull 초기 조건을 제공하거나 사용해야합니다.
namo토토 베이rict 전환 기능.
상태 전환 함수가 엄격하지 않으면 각 입력 행에서 무조건적으로 호출되며 NULL을 처리해야합니다. 입력 및 널 전환 값 자체. 이것은 허용합니다 토토 베이의 핸들링을 완전히 제어 할 수있는 토토 베이 저자 널 값의
최종 함수가 선언 된 경우"엄격한"상태 가치는 무일합니다. 대신 널 결과가 반환됩니다
자동으로. (물론 이것은 단지 정상적인 행동입니다
엄격한 함수.) 어쨌든 최종 함수는 다음의 옵션이 있습니다.
널 값을 반환합니다. 예를 들어,의 최종 기능avg
거기에서 볼 때 Null을 반환합니다
입력 행이 0이었습니다.
좋아하는 토토 베이Min
또는max
때때로 최적화 할 수 있습니다
모든 입력 행을 스캔하는 대신 인덱스를 살펴 봅니다. 이 경우
토토 베이는 너무 최적화 될 수 있습니다. A를 지정하여 표시합니다.정렬 연산자. 기본 요구 사항은입니다
토토 베이가 정렬에서 첫 번째 요소를 산출해야한다는
연산자가 유도하는 주문; 다시 말해서:
탭에서 agg (col)를 선택하십시오.
:와 동일해야합니다.
COL에서 COL에서 COL을 선택하여 Sortop Limit 1;
추가 가정은 토토 베이가 널 입력을 무시한다는 것입니다.
그리고 그것이없는 경우에만 널 결과를 제공한다는 것은
널 비 널 입력. 일반적으로 데이터 유형<연산자는 적절한 정렬 연산자입니다Min
및|max
. 최적화는 결코 결코 아닙니다
지정된 연산자가가 아니라면 실제로 발효됩니다.""보다 작습니다.또는""보다 큰 "B-Tree 지수의 전략 멤버
운영자 클래스.
토토 베이 함수를 만들 수 있으려면usage인수 유형에 대한 특권 상태 유형 및 반환 유형 및execute전환 및 최종 특권 기능.
집계 함수의 이름 (선택적으로 스키마 자격) 만들려면.
이 토토 베이 기능이 작동하는 입력 데이터 유형. 에게
제로 관점 토토 베이 함수 생성, 쓰기*입력 데이터 유형 목록 대신. (an
그러한 토토 베이의 예는입니다.count (*)
.)
기존 구문에서토토 베이 생성, 입력 데이터 유형은 A에 의해 지정됩니다.BaseType옆에 쓰여지지 않고 매개 변수 집계 이름. 이 구문은 하나의 입력 만 허용합니다 매개 변수. 제로 관점 집계 함수를 정의하려면 지정하십시오 그만큼BaseTypeas"Any"(아님*).
각각에 대해 호출되는 상태 전환 기능의 이름 입력 행. forn-율법 토토 베이 기능,sfunc필수 가져가다n+1 인수, 첫 번째 존재 유형state_data_type및 토토 베이의 선언 된 입력 데이터 유형과 일치합니다. 그만큼 함수는 유형 값을 반환해야합니다state_data_type. 이 기능은 현재 상태 값 및 현재 입력 데이터 값 및 다음 상태 가치를 반환합니다.
토토 베이 상태 값의 데이터 유형.
집계를 계산하기 위해 호출 된 최종 함수의 이름 결과 모든 입력 행이 통과 한 후 결과. 함수는해야합니다 유형의 단일 논증을 취하십시오state_data_type. 반환 데이터 유형 토토 베이는이 함수의 리턴 유형으로 정의됩니다. 만약에ffunc지정되지 않은 다음 결말 상태 값은 집계 결과로 사용됩니다. 반환 유형은state_data_type.
상태 값의 초기 설정. 이것은 문자열이어야합니다 데이터 유형에 대해 허용되는 양식에서 상수State_data_type. 명시되지 않은 경우 상태 값은 널 시작됩니다.
a 관련 정렬 연산자Min
- 또는max
-like
골재. 이것은 단지 운영자 이름 일뿐입니다
스키마 자격). 연산자는 동일한 입력을 가지고 있다고 가정합니다
데이터 유형은 집계로서 (단일 관습이어야합니다.
골재).
의 매개 변수토토 베이 생성can 위에 표시된 순서뿐만 아니라 어떤 순서로든 작성하십시오.
젠 토토 : 문서 : 9.3 : Copy | 배트맨 토토 : 문서 : 9.3 : 배트맨 토토 9.3.25 문서화 | 다음 |
COPY | up | 캐스트 만들기 |