PostgreSQL 8.0.0 �����ĵ���PostgreSQL �й� ������ | ||||
---|---|---|---|---|
Prev | Fast Backward | Fast Forward | Next |
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��
Ҫ�����ľۼ���������������ģʽ���εģ���
���ۼ�����Ҫ����Ļ����������͡� ���ڲ�����������͵ľۼ���˵�����������������Ϊ"ANY"�� ������ count(*)����
���ڴ���Դ���������ÿһ���������ݵ�״̬ת���������ơ� ��ͨ����һ��˫�����ĺ�������һ�������������� state_data_type ���ڶ��������������� input_data_type. ���⣬����һ��������������ݵľۼ����ú���ֻ����һ������Ϊ state_data_type �IJ����� ����������������˺������뷵��һ������Ϊ state_data_type��ֵ�� ����������ܵ�ǰ״ֵ̬�͵�ǰ����������Ŀ���������¸�״ֵ̬��
�ۼ���״ֵ̬���������͡�
��ת��������������/�ֶκ���õ����մ�������������ۼ��Ľ���� �˺����������һ������Ϊ state_data_type �IJ����� �ۼ�������������ͱ�����Ϊ�˺����ķ������͡� ���û������ ffunc ��ʹ�þۼ������״ֵ̬��Ϊ�ۼ��Ľ�������������Ϊ state_data_type��
״ֵ̬�ij�ʼ���ã�ֵ������������һ���������� state_data_type ���Խ��ܵ��ı�����ֵ�� ���û��������״ֵ̬��ʼΪ NULL��
CREATE AGGREGATE �IJ����������κ�˳����д������ֻ��������ʾ��˳��