Mysql:函数之四:和group by配合使用的聚合函数

除非特殊说明,聚合函数均忽略 null 值的记录。

除非特殊说明,聚合函数均在没有匹配记录(记录集为空)的情况下均返回 null 值。

如果在没有使用group by的语句中使用聚合函数,相当于对所有的行进行分组。

 Aggregate (GROUP BY) Functions

NameDescription
AVG() Return the average value of the argument
BIT_AND() Return bitwise and
BIT_OR() Return bitwise or
BIT_XOR()(v4.1.1) Return bitwise xor
COUNT(DISTINCT) Return the count of a number of different values
COUNT() Return a count of the number of rows returned
GROUP_CONCAT()(v4.1) Return a concatenated string
MAX() Return the maximum value
MIN() Return the minimum value
STDDEV_POP()(v5.0.3) STDDEV()  STD() Return the population standard deviation
STDDEV_SAMP()(v5.0.3) Return the sample standard deviation
SUM() Return the sum
VAR_POP()(v5.0.3) VARIANCE()(v4.1) Return the population standard variance
VAR_SAMP()(v5.0.3) Return the sample variance

bit_and() 如果没有行返回,则为 最大的unsigned bigint整数:18446744073709551615

bit_or()、bit_xor() 如果没有行返回,则为 0

count(*) 返回所有行的数据,包括null,如果没有行返回,则为 0

count(expr)返回所有非null的数据,如果没有行返回,则为 0

count(distinct expr)返回所有非null的不同数据,如果没有行返回,则为 0;和sql标准不兼容,标准sql返回所有不同的数据的行数,包括null值

group by的rollup统计修饰词。相当于sqlserver的rollup功能!

mysql对标准的sql语言的group by的扩展:在select列表中可以出现不在 group by 中的列,此时,该对group by的隐藏列的值是随机抽取的。所有应该保证该列的值对应group by的分组列来说是 相同的才有意义!当然除非你就想这样!类似的还有having的处理。所以,如果你想避免这个不怎么样的mysql扩展,可以通过设置 ONLY_FULL_GROUP_BY SQL mode is enabled来解决。

原文地址:https://www.cnblogs.com/jinzhenshui/p/1629950.html