aboutsummaryrefslogtreecommitdiff
path: root/doc/src/sgml/ref/create_aggregate.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/sgml/ref/create_aggregate.sgml')
-rw-r--r--doc/src/sgml/ref/create_aggregate.sgml300
1 files changed, 300 insertions, 0 deletions
diff --git a/doc/src/sgml/ref/create_aggregate.sgml b/doc/src/sgml/ref/create_aggregate.sgml
new file mode 100644
index 00000000000..b52c002fd63
--- /dev/null
+++ b/doc/src/sgml/ref/create_aggregate.sgml
@@ -0,0 +1,300 @@
+<REFENTRY ID="SQL-CREATEAGGREGATE-1">
+ <REFMETA>
+ <REFENTRYTITLE>
+ CREATE AGGREGATE
+ </REFENTRYTITLE>
+ <REFMISCINFO>SQL - Language Statements</REFMISCINFO>
+ </REFMETA>
+
+<comment>This entry needs a lot of work, especially some
+usefully complex examples. Since I don't yet understand it, I
+haven't done this.</comment>
+
+ <REFNAMEDIV>
+ <REFNAME>
+ CREATE AGGREGATE
+ </REFNAME>
+ <REFPURPOSE>
+ Defines a new aggregate function
+ </REFPURPOSE>
+ <REFSYNOPSISDIV>
+ <REFSYNOPSISDIVINFO>
+ <DATE>1998-04-15</DATE>
+ </REFSYNOPSISDIVINFO>
+ <SYNOPSIS>
+ CREATE AGGREGATE <REPLACEABLE CLASS="PARAMETER">name</REPLACEABLE> [AS]
+ ([ SFUNC1 = <REPLACEABLE CLASS="PARAMETER">state_transition_function1</REPLACEABLE>
+ , BASETYPE = <REPLACEABLE CLASS="PARAMETER">data_type</REPLACEABLE>
+ , STYPE1 = <REPLACEABLE CLASS="PARAMETER">sfunc1_return_type</REPLACEABLE> ]
+ [, SFUNC2 = <REPLACEABLE CLASS="PARAMETER">state_transition_function2</REPLACEABLE>
+ , STYPE2 = <REPLACEABLE CLASS="PARAMETER">sfunc2_return_type</REPLACEABLE> ]
+ [, FINALFUNC = <REPLACEABLE CLASS="PARAMETER">final_function</REPLACEABLE> ]
+ [, INITCOND1 = <REPLACEABLE CLASS="PARAMETER">initial_condition1</REPLACEABLE> ]
+ [, INITCOND2 = <REPLACEABLE CLASS="PARAMETER">initial_condition2</REPLACEABLE> ]
+ )
+ </SYNOPSIS>
+
+ <REFSECT2 ID="R2-SQL-CREATEAGGREGATE-1">
+ <REFSECT2INFO>
+ <DATE>1998-04-15</DATE>
+ </REFSECT2INFO>
+ <TITLE>
+ Inputs
+ </TITLE>
+ <variablelist>
+ <varlistentry>
+ <term></term>
+ <listitem>
+ <PARA>
+ <VARIABLELIST>
+ <VARLISTENTRY>
+ <TERM>
+ <REPLACEABLE CLASS="PARAMETER">name</REPLACEABLE>
+ </TERM>
+ <LISTITEM>
+ <para>
+ The name of an aggregate function to create.
+ </para>
+ </LISTITEM>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <REPLACEABLE CLASS="PARAMETER">state_transition_function1</REPLACEABLE>
+ </term>
+ <listitem>
+ <para>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <REPLACEABLE CLASS="PARAMETER">data_type</REPLACEABLE>
+ </term>
+ <listitem>
+ <para>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <REPLACEABLE CLASS="PARAMETER">sfunc1_return_type</REPLACEABLE>
+ </term>
+ <listitem>
+ <para>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <REPLACEABLE CLASS="PARAMETER">state-transition_function2</REPLACEABLE>
+ </term>
+ <listitem>
+ <para>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <REPLACEABLE CLASS="PARAMETER">sfunc2_return_type</REPLACEABLE>
+ </term>
+ <listitem>
+ <para>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <REPLACEABLE CLASS="PARAMETER">final_function</REPLACEABLE>
+ </term>
+ <listitem>
+ <para>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <REPLACEABLE CLASS="PARAMETER">initial_condition1</REPLACEABLE>
+ </term>
+ <listitem>
+ <para>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <REPLACEABLE CLASS="PARAMETER">initial_condition2</REPLACEABLE>
+ </term>
+ <listitem>
+ <para>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </PARA>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </REFSECT2>
+
+ <REFSECT2 ID="R2-SQL-CREATEAGGREGATE-2">
+ <REFSECT2INFO>
+ <DATE>1998-04-15</DATE>
+ </REFSECT2INFO>
+ <TITLE>
+ Outputs
+ </TITLE>
+ <PARA>
+ </PARA>
+ <VARIABLELIST>
+ <VARLISTENTRY>
+ <TERM>
+ </TERM>
+ <LISTITEM>
+ <PARA>
+ <VARIABLELIST>
+ <VARLISTENTRY>
+ <TERM>
+ <ReturnValue>CREATE</ReturnValue>
+ </TERM>
+ <LISTITEM>
+ <PARA>
+ Message returned if the command completes successfully.
+ </PARA>
+ </LISTITEM>
+ </VARLISTENTRY>
+ </VARIABLELIST>
+ </LISTITEM>
+ </VARLISTENTRY>
+ </VARIABLELIST>
+
+ </REFSECT2>
+ </REFSYNOPSISDIV>
+
+ <REFSECT1 ID="R1-SQL-CREATEAGGREGATE-1">
+ <REFSECT1INFO>
+ <DATE>1998-04-15</DATE>
+ </REFSECT1INFO>
+ <TITLE>
+ Description
+ </TITLE>
+ <PARA>
+ An aggregate function can use up to three functions, two
+ state transition functions, X1 and X2:
+ X1( internal-state1, next-data_item ) ---> next-internal-state1
+ X2( internal-state2 ) ---> next-internal-state2
+ and a final calculation function, F:
+ F(internal-state1, internal-state2) ---> aggregate-value
+ These functions are required to have the following properties:
+ <itemizedlist>
+ <listitem>
+ <para>
+ The arguments to state-transition-function-1 must
+ be (stype1,basetype), and its return value must be
+ stype1.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The argument and return value of state-transition-
+ function-2 must be stype2.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The arguments to the final-calculation-function
+ must be (stype1,stype2), and its return value must
+ be a POSTGRES base type (not necessarily the same
+ as basetype.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The final-calculation-function should be specified
+ if and only if both state-transition functions are
+ specified.
+ </para
+ </listitem>
+ </itemizedlist>
+ </PARA>
+ <para>
+ Note that it is possible to specify aggregate functions
+ that have varying combinations of state and final functions.
+ For example, the "count" aggregate requires sfunc2
+ (an incrementing function) but not sfunc1 or finalfunc,
+ whereas the "sum" aggregate requires sfunc1 (an addition
+ function) but not sfunc2 or finalfunc and the "average"
+ aggregate requires both of the above state functions as
+ well as a finalfunc (a division function) to produce its
+ answer. In any case, at least one state function must be
+ defined, and any sfunc2 must have a corresponding initcond2.
+ </para>
+ <para>
+ Aggregates also require two initial conditions, one for
+ each transition function. These are specified and stored
+ in the database as fields of type text.
+ </para>
+
+ <REFSECT2 ID="R2-SQL-CREATEAGGREGATE-3">
+ <REFSECT2INFO>
+ <DATE>1998-04-15</DATE>
+ </REFSECT2INFO>
+ <TITLE>
+ Notes
+ </TITLE>
+ <PARA>
+ CREATE AGGREGATE function is a PostgreSQL language extension.
+ </PARA>
+
+ <para>
+ Refer to DROP AGGREGATE function to drop aggregate functions.
+ </para>
+ </REFSECT2>
+
+ <REFSECT1 ID="R1-SQL-CREATEAGGREGATE-2">
+ <TITLE>
+ Usage
+ </TITLE>
+ <PARA>
+ </PARA>
+ <ProgramListing>
+ </ProgramListing>
+
+
+ </REFSECT1>
+
+ <REFSECT1 ID="R1-SQL-CREATEAGGREGATE-3">
+ <TITLE>
+ Compatibility
+ </TITLE>
+ <PARA>
+ </PARA>
+
+ <REFSECT2 ID="R2-SQL-CREATEAGGREGATE-4">
+ <REFSECT2INFO>
+<DATE>1998-04-15</DATE>
+ </REFSECT2INFO>
+ <TITLE>
+ SQL92
+ </TITLE>
+ <PARA>
+ There is no CREATE AGGREGATE function on SQL92.
+ </PARA>
+
+</REFENTRY>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:"../reference.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:"/usr/lib/sgml/catalog"
+sgml-local-ecat-files:nil
+End:
+-->