¾�ΥС�������ʸ�� �� 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

Chapter 15. SQL�γ�ĥ��������

PostgreSQL�ˤ����뽸��ϡ����������������ܴؿ��ν����ɽ������Ƥ��ޤ����Ĥޤꡢ1�Ĥν���ϥ��󥹥��󥹤ν����ˤ���ѹ����줿���֤Ȥ���������뤳�Ȥ��Ǥ��ޤ�������������ؿ���������뤿��ˤϡ����֤Υǡ����������֤ν���͡������ƾ������ܴؿ��Τ���Υǡ����������򤷤ޤ����������ܴؿ��Ϥ��������̤δؿ��ǡ�����ʳ���ʸ̮�Ǥ�Ȥ����Ȥ��Ǥ��ޤ��������뽸��η�̤�ư���Ƥ�������ͤΤʤ��ˤ���٤��ǡ����Ȱ㤦���ϡ��ǽ��ؿ�����ꤹ�뤳�Ȥ��Ǥ��ޤ���

�������äơ�����Υ桼�����˸��������Ϥȷ�̤Υǡ������˲ä������Ϥȷ�̤η��Τɤ���Ȥ�㤦���������ͤΥǡ�����������ޤ���

�⤷�ǽ��ؿ���Ȥ�ʤ��������������Ȥ���ȡ����줾��ιԤΥ�����ͤ�ư���Ƥ���ؿ���׻����뽸�󤬤Ǥ��ޤ���Sum�Ϥ��Τ褦�ʽ���ΰ���Ǥ���Sum��0����Ϥޤ��˸��ߤιԤ��ͤ򤽤λ����ޤǤ����¤��ɲä��ޤ������Ȥ��С��⤷Sum�����ʣ�ǿ��Υǡ�������ư���褦�ˤ�������С����Υǡ������βû��ؿ�������ɬ�פˤʤ�ޤ�����������ϰʲ��Τ褦�ˤʤ�ޤ���

CREATE AGGREGATE complex_sum (
    sfunc = complex_add,
    basetype = complex,
    stype = complex,
    initcond = '(0,0)'
);

SELECT complex_sum(a) FROM test_complex;

 complex_sum
-------------
 (34,53.9)

�ºݤλ��ѤǤϡ����ν����sum�Ȥ���̾�դ���complex������ˤɤι�פ򤢤ƤϤ�뤫��PostgreSQL�ˤޤ����ޤ���

�嵭��sum������ϡ��⤷��NULL�������ͤ��ʤ����0�ʽ�����֡ˤ��֤��ޤ������ξ������������NULL���֤������ΤǤϤʤ����Ȼפ��ޤ�����SQL�Ǥ�sum�����Τ褦��ư��뤳�Ȥ���Ԥ��Ƥ��ޤ����������뤿��ˤ�ñ��initcond ����ά����С�������֤�NULL�ˤʤ�ޤ����̾�Ϥ�������ȡ� sfunc��NULL���֤����Ϥ�����å����ʤ���Ф����ʤ��Ȥ������Ȥ��̣���ޤ�����sum��max�� min�Τ褦��¾�δ�ñ�ʽ���ˤȤäƤϡ��ǽ����NULL�����ͤ�����ѿ�����������2���ܤ���NULL�����ͤǾ������ܴؿ��򤢤ƤϤ�Ϥ��н�ʬ�Ǥ���PostgreSQL�ϡ��⤷������֤�NULL�Ǿ������ܴؿ���"��̩(strict)"�ȥޡ�������Ƥ����硢��ưŪ�ˤ����¹Ԥ��ޤ��ʤĤޤ�NULL���ϤȤ��ƸƤӽФ���ʤ�����ˤǤ��ˡ�

�⤦1�Ĥ�"��̩(strict)"�ʾ������ܴؿ��Υǥե����ư��Ȥ��Ƥϡ�NULL�����ͤ�����������ξ����ͤ��Ѥ�餺�˰ݻ������Ȥ������Ȥ�����ޤ����������ä�NULL��̵�뤵��ޤ����⤷NULL���Ϥ��Ф�¾��ư�ɬ�פʾ��ϡ�ñ�˾������ܴؿ�����̩�Ȥ����������NULL���Ϥθ�����Ԥ��褦�˥����ǥ��󥰤���ɬ�פʤ��Ȥ򤹤�Ф褤�ΤǤ���

Avg (ʿ���ͷ׻�)�Ϥ�ä�ʣ���ʽ���ΰ���Ǥ�������ˤ�2�Ĥ���ư������֤�ɬ�פˤʤ�ޤ������Ϥι�פ����Ͽ��Υ�����ȤǤ����ǽ�Ū�ʷ�̤Ϥ������ͤ�任���뤳�Ȥˤ�ä������ޤ���Average��ŵ��Ū�������Ǥ��������������ͤȤ��ƻȤäƼ�������ޤ������Ȥ��С�avg(float8)���Ȥ߹��ߤμ����ϰʲ��Τ褦�ˤʤäƤ��ޤ���

CREATE AGGREGATE avg (
    sfunc = float8_accum,
    basetype = float8,
    stype = float8[],
    finalfunc = float8_avg,
    initcond = '{0,0}'
);

����˾ܤ����������ե���󥹥ޥ˥奢����CREATE AGGREGATE�򻲾Ȥ��Ƥ���������