聚合函数的作用是根据一个输入值的集合计算出一个单独的结果值。
下面的表中列出了内置的聚合函数。
| Function | Argument Type | Return Type | Description |
|---|---|---|---|
| AVG(expression) | INTEGER, REAL, DOUBLE PRECISION, NUMBER | NUMBER for any integer type, DOUBLE PRECISION for a floating-point argument, otherwise the same as the argument data type | The average (arithmetic mean) of all input values |
| COUNT(*) | BIGINT | Number of input rows | |
| COUNT(expression) | Any | BIGINT | Number of input rows for which the value of expression is not null |
| MAX(expression) | Any numeric, string, ordate/time type | Same as argument type | Maximum value of expression across all input values |
| MIN(expression) | Any numeric, string, or date/time type | Same as argument type | Minimum value of expression across all input values |
| SUM(expression) | INTEGER, REAL, DOUBLE PRECISION, NUMBER | BIGINT for SMALLINT or INTEGER arguments, NUMBER forBIGINT arguments, DOUBLE PRECISION for floating¬point arguments, otherwise the same as the argument data type | Sum of expression across all input values |
应该注意的是除了函数COUNT外,当没有查询出记录时,其它函数返回空值。特别是,如果没有记录的话,函数SUM返回空值,而不是像期待的那样,返回0。当必要的时候,您可以使用函数 COALESCE将空值替换为0。
下面的表格显示了通常用于统计分析的聚合函数(之所以和上面的通用聚合函数分开列出,是为了更明确各自的功能)。在描述中提到N的地方,表示对于那些输入表达式为非空的输入记录的数量 。在所有情况下,如果计算没有意义,例如,当N是0的时候,函数会返回空值。
| Function | Argument Type | Return Type | Description |
|---|---|---|---|
| CORR( Y, X) | DOUBLE PRECISION | DOUBLE PRECISION | Correlation coefficient |
| COVAR POP( Y, X) | DOUBLE PRECISION | DOUBLE PRECISION | Population covariance |
| COVAR SAMP( Y, X) | DOUBLE PRECISION | DOUBLE PRECISION | Sample covariance |
| REGR AVGX( Y, X) | DOUBLE PRECISION | DOUBLE PRECISION | Average of the independent variable (sum(X) / N) |
| REGR AVGY(Y, X) | DOUBLE PRECISION | DOUBLE PRECISION | Average of the dependent variable (sum(Y) / N) |
| REGR COUNT( Y, X) | DOUBLE PRECISION | DOUBLE PRECISION | Number of input rows in which both expressions are nonnull |
| REGR INTERCEPT(Y, X) | DOUBLE PRECISION | DOUBLE PRECISION | y-intercept of the least- squares-fit linear equation determined by the (X, Y) pairs |
| REGR R2( Y, X) | DOUBLE PRECISION | DOUBLE PRECISION | Square of the correlation coefficient |
| REGR SLOPE( Y, X) | DOUBLE PRECISION | DOUBLE PRECISION | Slope of the least-squares- fit linear equation determined by the (X, Y) pairs |
| REGR SXX(Y, X) | DOUBLE PRECISION | DOUBLE PRECISION | Sum (X2) - sum (X)2 / N ("sum of squares" of the independent variable) |
| REGR SXY(Y, X) | DOUBLE PRECISION | DOUBLE PRECISION | Sum (X* Y) - sum (X) * sum( Y) / N ("sum of products" of independent times dependent variable) |
| REGR SYY( Y, X) | DOUBLE PRECISION | DOUBLE PRECISION | Sum (Y2) - sum (Y)2 / N ("sum of squares" of the dependent variable) |
| STDDEV(expression) | INTEGER, REAL, DOUBLE PRECISION, NUMBER | DOUBLE PRECISION for floating-point arguments, otherwise NUMBER | Historic alias for STDDEV SAMP |
| STDDEV POP(expression) | INTEGER, REAL, DOUBLE PRECISION, NUMBER | DOUBLE PRECISION for floating-point arguments, otherwise NUMBER | Population standard deviation of the input values |
| STDDEV SAMP(expression) | INTEGER, REAL, DOUBLE PRECISION, NUMBER | DOUBLE PRECISION for floating-point arguments, otherwise NUMBER | Sample standard deviation of the input values |
| VARIANCE(expression) | INTEGER, REAL, DOUBLE PRECISION, NUMBER | DOUBLE PRECISION for floating-point arguments, otherwise NUMBER | Historical alias for VAR SAMP |
| VAR POP(expression) | INTEGER, REAL, DOUBLE PRECISION, NUMBER | DOUBLE PRECISION for floating-point arguments, otherwise NUMBER | Population variance of the input values (square of the population standard deviation) |
| VAR SAMP(expression) | INTEGER, REAL, DOUBLE PRECISION, NUMBER | DOUBLE PRECISION for floating-point arguments, otherwise NUMBER | Sample variance of the input values (square of the sample standard deviation) |