¾�ΥС�������ʸ�� �� 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

CREATE AGGREGATE

名前

CREATE AGGREGATE -- ����������ؿ����������

概要

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����ǥå����黻�ҥ��饹��"��꾮����"���ȥ�ƥ���"����礭��"���ȥ�ƥ��Υ��ФǤʤ��¤ꡢ��Ŭ�����ºݤˤϸ��̤��ʤ����Ȥ����դ��Ƥ���������

�ѥ�᡼��

name

�������뽸��ؿ���̾���Ǥ��ʥ������޽���̾��ġˡ�

input_data_type

����ؿ����黻�������ϥǡ������Ǥ��� ������¸�ߤ��ʤ�����ؿ����������ˤϡ����ϥǡ������Υꥹ�Ȥ�*�ȵ��ܤ��Ƥ������� ���㤨�� count(*)�ʤɤν���Ǥ��ˡ�

base_type

CREATE AGGREGATE�ε칽ʸ�Ǥϡ����ϥǡ������Ͻ���̾�Τμ��˵��ܤ��줿��ΤǤϤʤ�basetype�ѥ�᡼���ˤ����ꤵ��ޤ��� ���ι�ʸ�Ǥϣ��Ĥ����ϥѥ�᡼����������Ǥ��ʤ����Ȥ����դ��Ƥ��������� ����������ʤ������������뤿��ˤϡ�basetype��"ANY" ��*�ǤϤ���ޤ���ˤȻ��ꤷ�Ƥ���������

sfunc

���줾������ϹԤ��Ф��ƸƤӽФ����������ܴؿ���̾���Ǥ��� N��������Ľ���ؿ��Ǥϡ�sfunc��N+1�Ĥΰ�������ʤ���Фʤ�ޤ��� �ǽ�ΰ�����state_data_type���ǡ��Ĥ�Ϥ��ν�������ϥǡ������Ȥ������������ΤȰ��פ��Ƥ��ʤ���Фʤ�ޤ��� ���δؿ���state_data_type�����ͤ��֤��ʤ���Фʤ�ޤ��� ���δؿ��ϡ����ߤξ����ͤȸ��ߤ����ϥǡ����ͤ������ꡢ���ξ����ͤ��֤��ޤ���

state_data_type

����ξ����ͤΥǡ������Ǥ���

ffunc

�ǽ��ؿ���̾���Ǥ����ǽ��ؿ��ϡ����Ƥ����ϹԤ��Ф������������ä��塢����η�̤�׻����뤿��˸ƤӽФ���ޤ��� ���δؿ���state_data_type���ΰ�����1�ļ��ʤ���Фʤ�ޤ��� ����ν��ϥǡ������Ϥ��δؿ����֤��ͤȤ����������ޤ��� ffunc�����ꤵ��ʤ����ˤϡ�����η�̤Ȥ��ƽ�λ���ξ����ͤ��Ȥ��ޤ������Ϸ���state_data_type�ˤʤ�ޤ���

initial_condition

�����ͤν������Ǥ��� �ǡ�����state_data_type�Ȥ��Ƽ�������ǽ��ʸ��������Ǥʤ���Ф����ޤ��� ���Υѥ�᡼�������ꤵ��ʤ���硢�����ͤ�NULL����Ϥޤ�ޤ���

sort_operator

MIN�ޤ���MAX�Τ褦�ʽ�����Ф��ƴ�Ϣ�դ��������ȱ黻�ҤǤ��� �����ñ�ʤ�黻�Ҥ�̾���Ǥ��ʥ������ޤǽ�����ǽ�ˡ� ���α黻�ҤϽ���ʤ����ñ������ν���Ǥʤ���Фʤ�ޤ���ˤ�Ʊ�����ϥǡ���������Ĥ����󤵤�Ƥ��ޤ���

CREATE AGGREGATE�Υѥ�᡼���ϡ�Ǥ�դν��֤ǵ��Ҥ��뤳�Ȥ��Ǥ��ޤ����嵭�ν��֤ǵ��Ҥ���ɬ�פϤ���ޤ���

��

項34.10�򻲾Ȥ��Ƥ���������

�ߴ���

CREATE AGGREGATE��PostgreSQL�θ����ĥ�Ǥ��� ɸ��SQL�ˤϡ��桼������ν���ؿ�����Ѥ��뵡ǽ�Ϥ���ޤ���

��Ϣ����

ALTER AGGREGATE, DROP AGGREGATE