MySQL版本:5.7+
一、MySQL 5.7中的聚合函数
MySQL 5.7中的聚合函数如下:
除非另有说明,否则组合函数会忽略NULL值。
如果在不包含Group By子句的语句中使用组合函数,就等效于对所有行进行分组。(个人理解是,结果总是只有一行。)关于这点的更多信息,后面的小节“MySQL处理Group By的方式”会讲到。
聚合函数中,方差和标准差函数会对数值参数返回DOUBLE值。SUM()和AVG()对精确值参数(integer或DECIMAL)返回DECIMAL值,而对近似值参数(FLOAT或DOUBLE)返回DOUBLE值。
时间类型的参数对SUM()和AVG()无效。它们会把时间类型的值转换成数字,丢弃第一个非数字字符后的所有信息)。如果要解决这个问题,先要将时间类型的值转换为合适的数值单元,在执行聚合操作后,再转换回时间值。如下所示:
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(time_col))) FROMtbl_name;SELECT FROM_DAYS(SUM(TO_DAYS(date_col))) FROM tbl_name;
诸如SUM()和AVG()这样需要数值参数的函数,会对非数值参数做必要的强制转换。而对于SET或ENUM值,强制转换操作会导致使用基础数值。
BIT_AND(),BIT_OR()和BIT_XOR()聚合函数执行位操作。它们需要BIGINT