CREATE AGGREGATE

Name

CREATE AGGREGATE -- ����һ���µľۼ�����

Synopsis

CREATE AGGREGATE name (
    BASETYPE = input_data_type,
    SFUNC = sfunc,
    STYPE = state_data_type
    [ , FINALFUNC = ffunc ]
    [ , INITCOND = initial_condition ]
)

����

CREATE AGGREGATE����һ���µľۼ������� һЩ���õľۼ������Ѿ������ڻ�����������ˣ��� Section 9.15 �����ĵ���¼�� �������Ҫ����һ�������ͻ���Ҫһ����û���ṩ�ľۼ���������ʱ����� CREATE AGGREGATE ���ṩ��������Ҫ�����ԡ�

���������һ��ģʽ�����֣����磬CREATE AGGREGATE myschema.myagg ...������ô�þۼ���������ָ��ģʽ�д����ġ� ���������ڵ�ǰģʽ�д����ġ�

һ���ۼ����������������ֺ�����������������ʶ�ġ� ͬһģʽ����������ۼ�������������ݲ�ͬ�����ǿ�������ͬ�����֡� һ���ۼ������������������ͱ��������ͬһģʽ�е���ͨ���������ֺ��������Ͳ�ͬ��

һ���ۼ���������һ����������ͨ�������ɵģ� һ��״̬ת������ sfunc, ��һ����ѡ���ռ��㺯�� ffunc. ����������ʹ�õģ�

sfunc( internal-state, next-data-item ) ---> next-internal-state
ffunc( internal-state ) ---> aggregate-value

PostgreSQL ����һ������Ϊ stype����ʱ������ ����������ۼ��ĵ�ǰ�ڲ�״̬�� ����ÿ������������Ŀ�� ������״̬ת�����������ڲ�״ֵ̬������ֵ�� �ڴ������������ݺ󣬵���һ�����մ������Լ���ۼ��ķ���ֵ�� ���û�����մ���������ô������״ֵ̬��������ֵ��

һ���ۼ������������ṩһ����ʼ������Ҳ����˵�����õĸ��ڲ�״ֵ̬�ij�ʼֵ�� ���ֵ����Ϊһ������Ϊ text ���ֶδ洢�����ݿ���ģ� �������DZ�����״ֵ̬�������͵ĺϷ����ⲿ������ʽ�ij����� ���û���ṩ״̬����ô״ֵ̬��ʼ��Ϊ NULL��

�����״̬ת������������Ϊ "strict"�� ��ô�Ͳ����� NULL ��������������ʱ�򣬴���������ת�������ľۼ�ִ���������������������� NULL �����ֵ�����ԣ������ô˺������ұ���ǰһ��״ֵ̬���������ʼ״ֵ̬�� NULL����ô�ɵ�һ���� NULL ֵ�滻��״ֵ̬�� ��״̬ת�������ӵڶ����� NULL ������ֵ��ʼ���á������������DZȽ�����ʵ���� max �����ľۼ��� ��ע��������Ϊֻ�ǵ� state_type �� input_data_type ��ͬ��ʱ��ű��ֳ����� �����Щ���Ͳ�ͬ��������ṩһ���� NULL �ij�ʼ��������ʹ��һ����strice��״̬ת��������

���״̬ת���������� strict���ϸ񣩵ģ� ��ô������������Ϊÿ������ֵ���ã� ���ұ������д��� NULL ����� NULL ת��ֵ�� ����������ۼ������߶Ծۼ��еĿ�ֵ����ȫ�Ŀ��ơ�

�����ת����������Ϊ"strict"�����������״ֵ̬�� NULL ʱ�Ͳ���������� �����Զ����һ��NULL�Ľ��������Ȼ������� strict ������������������ ����������������մ���������ѡ�񷵻� NULL�����磬 avg ���մ��������������¼ʱ�ͻ᷵�� NULL��

����

name

Ҫ�����ľۼ���������������ģʽ���εģ���

input_data_type

���ۼ�����Ҫ����Ļ����������͡� ���ڲ�����������͵ľۼ���˵�����������������Ϊ"ANY"�� ������ count(*)����

sfunc

���ڴ���Դ���������ÿһ���������ݵ�״̬ת���������ơ� ��ͨ����һ��˫�����ĺ�������һ�������������� state_data_type ���ڶ��������������� input_data_type. ���⣬����һ��������������ݵľۼ����ú���ֻ����һ������Ϊ state_data_type �IJ����� ����������������˺������뷵��һ������Ϊ state_data_type��ֵ�� ����������ܵ�ǰ״ֵ̬�͵�ǰ����������Ŀ���������¸�״ֵ̬��

state_data_type

�ۼ���״ֵ̬���������͡�

ffunc

��ת��������������/�ֶκ���õ����մ�������������ۼ��Ľ���� �˺����������һ������Ϊ state_data_type �IJ����� �ۼ�������������ͱ�����Ϊ�˺����ķ������͡� ���û������ ffunc ��ʹ�þۼ������״ֵ̬��Ϊ�ۼ��Ľ�������������Ϊ state_data_type��

initial_condition

״ֵ̬�ij�ʼ���ã�ֵ������������һ���������� state_data_type ���Խ��ܵ��ı�����ֵ�� ���û��������״ֵ̬��ʼΪ NULL��

CREATE AGGREGATE �IJ����������κ�˳����д������ֻ��������ʾ��˳��

ע��

ʹ�� DROP AGGREGATE ɾ���ۼ�������

����

���� Section 31.10��

������

CREATE AGGREGATE �� PostgreSQL ���Ե���չ�� �� SQL92 ��û�� CREATE AGGREGATE��

�ּ�

ALTER AGGREGATE, DROP AGGREGATE