聚合(GROUP BY)功能描述
本节介绍对值集进行操作的组(汇总)函数。
名称 | 描述 |
---|---|
AVG() | 返回参数的平均值 |
BIT_AND() | 按位返回AND |
BIT_OR() | 按位返回OR |
BIT_XOR() | 返回按位异或 |
COUNT() | 返回返回的行数的计数 |
COUNT(DISTINCT) | 返回多个不同值的计数 |
GROUP_CONCAT() | 返回串联的字符串 |
JSON_ARRAYAGG() | 将结果集作为单个JSON数组返回 |
JSON_OBJECTAGG() | 将结果集作为单个JSON对象返回 |
MAX() | 返回最大值 |
MIN() | 返回最小值 |
STD() | 返回人口标准差 |
STDDEV() | 返回人口标准差 |
STDDEV_POP() | 返回人口标准差 |
STDDEV_SAMP() | 返回样品标准偏差 |
SUM() | 返回总和 |
VAR_POP() | 返回总体标准方差 |
VAR_SAMP() | 返回样本方差 |
VARIANCE() | 返回总体标准方差 |
除非另有说明,否则组函数将忽略 NULL
值。
如果在不包含任何GROUP BY
子句的语句中使用组函数 ,则等效于对所有行进行分组。有关更多信息,请参见 第12.20.3节“ GROUP BY的MySQL处理”。
对于数值参数,variance和standard deviation函数返回一个双精度值。 SUM()
和 AVG()
函数返回精确值参数(整数或十进制 DECIMAL
)的十进制 DECIMAL
值,以及近似值参数((FLOAT
或 DOUBLE
)的双 DOUBLE
值。
SUM()
和 AVG()
聚合函数不能处理时间值。(它们将值转换为数字,在第一个非数字字符后丢失所有内容。)要解决此问题,请转换为数字单位,执行聚合操作,然后转换回时间值。Examples:
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(time_col))) FROM tbl_name;
SELECT FROM_DAYS(SUM(TO_DAYS(date_col))) FROM tbl_name;
需要数值参数的SUM()或AVG()函数在必要时将参数转换为数字。对于SET或ENUM值,强制转换操作将使用基础数值。
BIT_AND()、BIT_OR()和BIT_XOR()聚合函数执行位操作。它们需要BIGINT(64位整数)参数并返回BIGINT值。其他类型的参数转换为BIGINT,可能会发生截断。有关MySQL 8.0中允许位操作接受二进制字符串类型参数(binary、VARBINARY和BLOB类型)的更改的信息,see Section 12.12, “Bit Functions and Operators”.