*** DRAFT ***
SQL As Understood By SQLite
[Top]
Aggregate Functions
The aggregate functions shown below are available by default. Additional
aggregate functions written in C may be added using the
sqlite3_create_function()
API.
In any aggregate function that takes a single argument, that argument
can be preceded by the keyword DISTINCT. In such cases, duplicate
elements are filtered before being passed into the aggregate function.
For example, the function "count(distinct X)" will return the number
of distinct values of column X instead of the total number of nonnull
values in column X.
avg(X) 
The avg() function
returns the average value of all nonNULL X within a
group. String and BLOB values that do not look like numbers are
interpreted as 0.
The result of avg() is always a floating point value as long as
at there is at least one nonNULL input even if all
inputs are integers. The result of avg() is NULL if and only if
there are no nonNULL inputs.

count(X) count(*) 
The count(X) function returns
a count of the number of times
that X is not NULL in a group. The count(*) function
(with no arguments) returns the total number of rows in the group.

group_concat(X) group_concat(X,Y) 
The group_concat() function returns
a string which is the concatenation of
all nonNULL values of X. If parameter Y is present then
it is used as the separator
between instances of X. A comma (",") is used as the separator
if Y is omitted. The order of the concatenated elements is
arbitrary.

max(X) 
The max() aggregate function
returns the maximum value of all values in the group.
The maximum value is the value that would be returned last in an
ORDER BY on the same column. Aggregate max() returns NULL
if and only if there are no nonNULL values in the group.

min(X) 
The min() aggregate function
returns the minimum nonNULL value of all values in the group.
The minimum value is the first nonNULL value that would appear
in an ORDER BY of the column.
Aggregate min() returns NULL if and only if there are no nonNULL
values in the group.

sum(X) total(X) 
The sum() and total() aggregate functions
return sum of all nonNULL values in the group.
If there are no nonNULL input rows then sum() returns
NULL but total() returns 0.0.
NULL is not normally a helpful result for the sum of no rows
but the SQL standard requires it and most other
SQL database engines implement sum() that way so SQLite does it in the
same way in order to be compatible. The nonstandard total() function
is provided as a convenient way to work around this design problem
in the SQL language.
The result of total() is always a floating point value.
The result of sum() is an integer value if all nonNULL inputs are integers.
If any input to sum() is neither an integer or a NULL
then sum() returns a floating point value
which might be an approximation to the true sum.
Sum() will throw an "integer overflow" exception if all inputs
are integers or NULL
and an integer overflow occurs at any point during the computation.
Total() never throws an integer overflow.

*** DRAFT ***