CREATE AGGREGATE name ( input_data_type [ , ... ] ) ( SFUNC = sfunc, STYPE = state_data_type [ , FINALFUNC = ffunc ] [ , INITCOND = initial_condition ] [ , SORTOP = sort_operator ] ) �ޤ��ϰʲ��ε칽ʸ CREATE AGGREGATE name ( BASETYPE = base_type, SFUNC = sfunc, STYPE = state_data_type [ , FINALFUNC = ffunc ] [ , INITCOND = initial_condition ] [ , SORTOP = sort_operator ] )
CREATE AGGREGATE�ϡ�����������ؿ���������ޤ��� ����ʪ�ˤϴ���Ū�����ġ��褯���Ѥ���뽸��ؿ��������Ĥ��ޤޤ�Ƥ��ޤ��������ν���ؿ��ˤĤ��Ƥϡ�項9.18��ʸ����Ƥ��ޤ��� ������������������硢�ޤ��Ϥޤ�����Ƥ��ʤ�����ؿ���ɬ�פʾ�硢ɬ�פʵ�ǽ��¸����뤿���CREATE AGGREGATE��Ȥ����Ȥ��Ǥ��ޤ���
��������̾���դ����Ƥ�������㤨�С�CREATE AGGREGATE myschema.myagg ...�ˡ�����ؿ��ϻ��ꤵ�줿�������ޤǺ�������ޤ��� ��������̾���ʤ���С�����ؿ��ϸ��ߤΥ������ޤǺ�������ޤ���
����ؿ���̾�������ϥǡ�����(ʣ����)���Ȥ߹�碌�ˤ�äƼ��̤���ޤ��� �黻���оݤȤʤ����ϥǡ��������ۤʤäƤ���С�Ʊ�������������Ʊ��̾���ν���ؿ������äƤ���ޤ��� 1�ĤΥ���������Ǥϡ�����ؿ���̾�������ϥǡ�����(ʣ����)�ϡ��̾�δؿ���̾�������ϥǡ������Ȱۤʤ�ɬ�פ�����ޤ���
����ؿ���1�Ĥ�2�Ĥ��̾�δؿ��������ޤ��� �������ܴؿ�sfunc�Ⱦ�ά��ǽ�ʺǽ����ؿ�ffunc�Ǥ��� �����ϰʲ��Τ褦�˻Ȥ��ޤ���
sfunc( ��������, ���Υǡ����� ) ---> ������������ ffunc( �������� ) ---> ����η��
PostgreSQL�ϡ�����θ��ߤ��������֤��ݻ�����stype�ǡ������ΰ���ѿ���������ޤ��� ���줾������ϹԤ��Ф��ơ�����������ͤ������졢���ߤξ����ͤȿ����������ͤǿ��������������ѿ�������뤿��˾������ܴؿ����ƤӽФ���ޤ��� ���ƤιԤ����������ȡ�����ν����ͤ�����뤿��˺ǽ��ؿ���1��ƤӽФ���ޤ��� �ǽ��ؿ����ʤ����ϡ���λ���ξ����ͤ����Τޤ��֤���ޤ���
����ؿ��ϡ��������֤ν���ͤȤ��ƽ�����֤����뤳�Ȥ��Ǥ��ޤ��� �����text�����ͤȤ��ƥǡ����١����˳�Ǽ����ޤ����������ͥǡ�����������Ȥ���ͭ���ʳ���ɽ���Ǥʤ���Ф����ޤ��� ������֤�Ϳ�����Ƥ��ʤ���硢�����ͤ�NULL����Ϥޤ�ޤ���
�������ܴؿ���"���ʡ�strict��"���������Ƥ����硢NULL�������ͤˤ��ƸƤӽФ����ȤϤǤ��ޤ���
���Τ褦�����ܴؿ��Ǥϡ�����ϼ��Τ褦�˼¹Ԥ���ޤ���
NULL�����ͤ���ĹԤ�̵�뤵��ޤ���
�ʴؿ��ϸƤӽФ��줺������ξ����ͤ��ݻ�����ޤ�����
��������ͤ�NULL�Ǥ����硢�������ϹԤ����٤���NULL�����ͤǤ��ä����ˤ��ΰ������ͤǾ����ͤ��֤��������������ϹԤ����٤���NULL�����ͤ���Ļ��������ܴؿ��θƤӽФ����Ϥޤ�ޤ���
���Τ褦��ư��ϡ�max
�Τ褦�ʽ�����������ˤ������Ǥ���
��������state_data_type���ǽ��input_data_type��Ʊ�����ˤΤ�ͭ���Ǥ��뤳�Ȥ����դ��Ƥ���������
�����η����ۤʤ���ϡ���NULL����ͤ뤹�뤫�����ʤǤʤ����ܴؿ���Ȥ�ʤ���Ф����ޤ���
�������ܴؿ������ʡ�strict�ˤǤʤ����ϡ����줾������ϹԤ��Ф��Ƥ��δؿ���̵���˸ƤӽФ����Τǡ�NULL���Ϥ�NULL�����ͤ�ʬ�ǽ������ʤ���Ф����ޤ��� ����ϡ��ؿ��κ����Ԥ�������ؿ��ˤ�����NULL�ͤΰ�������������Ǥ��뤳�Ȥ��̣���ޤ���
�ǽ��ؿ���"���ʡ�strict��"���������Ƥ���ȡ���λ�����ͤ�NULL�λ��ϡ��ǽ��ؿ����ƤӽФ���ޤ���
���ξ�硢NULL�Ȥ�����̤���ưŪ�˽��Ϥ���ޤ�
�ʤ������ϡ����ʤʴؿ��ΰ���Ū��ư��˲�ޤ���ˡ�
�ɤΤ褦�ʾ��Ǥ⡢�ǽ��ؿ���NULL���֤����Ȥ��Ǥ��ޤ���
�㤨�С�avg
�κǽ��ؿ��ϡ����Ϥ�0�Ԥ��Ȥ狼���NULL���֤��ޤ���
MIN
��MAX
�Τ褦�ʿ��뽸��Ǥϡ����٤Ƥ����ϹԤ����������˥���ǥå��������뤳�ȤǺ�Ŭ���Ǥ��뤳�Ȥ�����ޤ���
���Τ褦�˺�Ŭ������뽸��ξ�硢�����ȱ黻������ꤹ�뤳�Ȥ��������Ƥ���������
���α黻�Ҥ���������륽���Ƚ�ǽ���κǽ�����Ǥ���������ʤ���Фʤ�ʤ��Ȥ������Ȥ�����Ū��ɬ���Ǥ���
����������ȡ�
SELECT agg(col) FROM tab;
��
SELECT col FROM tab ORDER BY col USING sortop LIMIT 1;
��Ʊ���Ǥʤ���Фʤ�ʤ��Ȥ������ȤǤ���
���ˡ�����NULL���Ϥ�̵�뤹�뤳�ȡ�����ӡ�NULL�ʳ������Ϥ��ޤä����ʤ��ä����ˤΤ�NULL�Ȥ�����̤��֤����Ȥ�����Ȥʤ�ޤ���
�̾�ǡ�������<�黻�Ҥ�MIN
�Υ����ȱ黻�ҤȤ��ơ��ޤ���>�黻�Ҥ�MAX
�Υ����ȱ黻�ҤȤ���Ŭ�ڤǤ���
���ꤷ���黻�Ҥ�B-tree����ǥå����黻�ҥ��饹��"��꾮����"���ȥ�ƥ���"����礭��"���ȥ�ƥ��Υ��ФǤʤ��¤ꡢ��Ŭ�����ºݤˤϸ��̤��ʤ����Ȥ����դ��Ƥ���������
�������뽸��ؿ���̾���Ǥ��ʥ���������̾��ġˡ�
����ؿ����黻�������ϥǡ������Ǥ���
������¸�ߤ��ʤ�����ؿ����������ˤϡ����ϥǡ������Υꥹ�Ȥ�*�ȵ��ܤ��Ƥ�������
���㤨�� count(*)
�ʤɤν���Ǥ��ˡ�
CREATE AGGREGATE�ε칽ʸ�Ǥϡ����ϥǡ������Ͻ���̾�Τμ��˵��ܤ��줿��ΤǤϤʤ�basetype�ѥ����ˤ����ꤵ��ޤ��� ���ι�ʸ�Ǥϣ��Ĥ����ϥѥ�����������Ǥ��ʤ����Ȥ����դ��Ƥ��������� ����������ʤ������������뤿��ˤϡ�basetype��"ANY" ��*�ǤϤ���ޤ���ˤȻ��ꤷ�Ƥ���������
���줾������ϹԤ��Ф��ƸƤӽФ����������ܴؿ���̾���Ǥ��� N��������Ľ���ؿ��Ǥϡ�sfunc��N+1�Ĥΰ�������ʤ���Фʤ�ޤ��� �ǽ�ΰ�����state_data_type���ǡ��Ĥ�Ϥ��ν�������ϥǡ������Ȥ������������ΤȰ��פ��Ƥ��ʤ���Фʤ�ޤ��� ���δؿ���state_data_type�����ͤ��֤��ʤ���Фʤ�ޤ��� ���δؿ��ϡ����ߤξ����ͤȸ��ߤ����ϥǡ����ͤ������ꡢ���ξ����ͤ��֤��ޤ���
����ξ����ͤΥǡ������Ǥ���
�ǽ��ؿ���̾���Ǥ����ǽ��ؿ��ϡ����Ƥ����ϹԤ��Ф������������ä��塢����η�̤�����뤿��˸ƤӽФ���ޤ��� ���δؿ���state_data_type���ΰ�����1�ļ��ʤ���Фʤ�ޤ��� ����ν��ϥǡ������Ϥ��δؿ����֤��ͤȤ����������ޤ��� ffunc�����ꤵ��ʤ����ˤϡ�����η�̤Ȥ��ƽ�λ���ξ����ͤ��Ȥ��ޤ������Ϸ���state_data_type�ˤʤ�ޤ���
�����ͤν������Ǥ��� �ǡ�����state_data_type�Ȥ��Ƽ�������ǽ��ʸ��������Ǥʤ���Ф����ޤ��� ���Υѥ��������ꤵ��ʤ���硢�����ͤ�NULL����Ϥޤ�ޤ���
MIN
�ޤ���MAX
�Τ褦�ʽ�����Ф��ƴ�Ϣ�դ��������ȱ黻�ҤǤ���
�����ñ�ʤ�黻�Ҥ�̾���Ǥ��ʥ������ޤǽ�����ǽ�ˡ�
���α黻�ҤϽ���ʤ����ñ������ν���Ǥʤ���Фʤ�ޤ���ˤ�Ʊ�����ϥǡ���������Ĥ�����Ƥ��ޤ���
CREATE AGGREGATE�Υѥ����ϡ�Ǥ�դν��֤ǵ��Ҥ��뤳�Ȥ��Ǥ��ޤ����嵭�ν��֤ǵ��Ҥ���ɬ�פϤ���ޤ���