집합 생성이름( 기본 유형 =input_data_type[ , SFUNC1 =sfunc1, STYPE1 =state1_type]
[ , SFUNC2 =sfunc2, STYPE2 =state2_type]
[ , 최종 기능 =ffunc]
[ , INITCOND1 =초기_조건1]
[ , INITCOND2 =초기_조건2 ] )
생성할 집계 함수의 이름입니다.
이 집계 함수가 사용되는 입력 데이터 유형 작동합니다.
매번 호출되는 상태 전환 함수 NULL이 아닌 입력 데이터 값입니다. 이는 두 가지 기능을 수행해야 합니다. 인수, 첫 번째 유형state1_type그리고 두 번째 유형input_data_type. 는 함수는 유형의 값을 반환해야 합니다.state1_type. 이 함수는 현재 상태 값 1과 현재 입력 데이터 항목, 그리고 다음 상태 값 1을 반환합니다.
첫 번째 상태 값에 대한 데이터 유형입니다. 롤 토토.
매번 호출되는 상태 전환 함수 NULL이 아닌 입력 데이터 값입니다. 이것은 하나의 기능이어야합니다 유형의 인수state2_type, 다음 값을 반환합니다. 같은 유형. 이 함수는 현재 상태 값 2를 사용합니다. 다음 상태 값 2를 반환합니다.
두 번째 상태 값의 데이터 유형입니다. 롤 토토.
집계의 계산을 위해 호출된 최종 함수 모든 입력 데이터를 탐색한 후의 결과입니다. 둘 다라면 상태 값이 사용되면 최종 함수는 두 가지를 취해야 합니다. 유형의 인수state1_type그리고state2_type. 상태 값이 하나만 있는 경우 가 사용되면 최종 함수는 다음의 단일 인수를 취해야 합니다. 해당 상태 값의 유형입니다. 출력 데이터 유형은 집계는 이 반환 유형으로 정의됩니다. 기능.
상태 값 1의 초기 값입니다.
상태 값 2의 초기 값입니다.
명령이 완료되면 메시지가 반환됨 성공적으로.
집합 생성사용자를 허용하거나 확장할 프로그래머포스트그레스새로운 집계 함수를 정의하여 기능을 수행합니다. 일부 집계 다음과 같은 기본 유형에 대한 함수분(int4)그리고평균(float8)이미 베이스에 제공되어 있습니다 유통. 새로운 유형을 정의하거나 롤 토토가 필요한 경우 기능은 아직 제공되지 않았습니다.만들기 집계원하는 기능을 제공하는 데 사용할 수 있습니다.
집계 함수는 이름과 입력 데이터로 식별됩니다. 유형. 두 집계가 작동하는 경우 동일한 이름을 가질 수 있습니다. 다양한 입력 유형. 혼란을 피하기 위해 이름과 입력 데이터 유형이 동일한 일반 함수 집계.
롤 토토 함수는 1과 3 사이에서 만들어집니다. 일반 함수: 두 가지 상태 전환 함수,sfunc1그리고sfunc2및 최종 계산 함수ffunc. 이들은 다음과 같이 사용됩니다. 다음과 같습니다:
sfunc1( 내부 상태1, 다음 데이터 항목 ) --- 다음 내부 상태1sfunc2( 내부 상태2 ) --- 다음 내부 상태2ffunc(내부 상태1, 내부 상태2) --- 롤 토토 값
포스트그레한두 개 생성 임시 변수(데이터 유형)stype1및/또는stype2) 현재 내부 상태를 유지합니다. 집계의. 각 입력 데이터 항목에서 상태 전이 내부에 대한 새 값을 계산하기 위해 함수가 호출됩니다. 상태 값. 모든 데이터 처리가 완료되면 최종 집계의 출력을 계산하기 위해 함수가 한 번 호출됩니다. 값.
ffunc다음의 경우 지정해야 합니다. 두 가지 전환 기능이 모두 지정됩니다. 전환이 하나만 있는 경우 함수가 사용된 경우ffunc이다 선택 사항. 기본 동작은 다음과 같습니다.ffunc제공되지 않은 것은 사용되는 내부 상태 값의 종료 값(그리고, 따라서 집계의 출력 유형은 해당 상태와 동일합니다. 값의 유형).
집계 함수는 하나 또는 두 개의 초기 정보를 제공할 수도 있습니다. 조건, 즉 내부 상태 값의 초기 값 사용되고 있습니다. 이는 다음과 같이 데이터베이스에 지정되고 저장됩니다. 유형의 필드텍스트, 하지만 그래야 합니다. 상태 값의 상수에 대한 유효한 외부 표현 데이터 유형. 만약에sfunc1지정됨 없이initcond1값, 그러면 시스템이 호출하지 않습니다sfunc1첫 번째 입력 항목에서; 대신 내부 상태 값 1은 다음과 같습니다. 첫 번째 입력 값으로 초기화되고sfunc1두 번째부터 호출됩니다. 입력항목. 이는 MIN 및 MAX와 같은 집계에 유용합니다. 참고 이 기능을 사용하는 집계는 호출 시 NULL을 반환합니다. 입력 값이 없습니다. 국가에 대한 비교 가능한 조항은 없습니다. 값 2; 만일sfunc2지정됨 그럼initcond2이다 필수입니다.
사용롤 토토 삭제집합을 삭제하려면 기능.
매개변수집합 생성그림의 순서뿐만 아니라 어떤 순서로도 쓸 수 있습니다. 위.
다음을 갖는 집계 함수를 지정할 수 있습니다. 상태와 최종 함수의 다양한 조합. 예를 들어,개수롤 토토 요구 사항sfunc2(증가 기능) 그러나 그렇지 않음sfunc1또는ffunc, 반면에합계롤 토토 요구 사항sfunc1(추가 기능)이지만 아님sfunc2또는ffunc그리고평균aggregate에는 두 가지 상태 함수가 모두 필요합니다. 글쎄요ffunc(부서 함수)에 대한 답변을 생성합니다. 어쨌든 적어도 하나는 상태 함수를 정의해야 하며 임의sfunc2해당하는 항목이 있어야 합니다initcond2.
다음의 집계 함수에 관한 장을 참조하세요.PostgreSQL 프로그래머 가이드완료용 사용 예입니다.
집합 생성은포스트그레언어 확장. 없습니다집합 생성SQL92에서.