Mysql:函数之四:和group by配合使用的聚合函数
除非特殊说明,聚合函数均忽略 null 值的记录。
除非特殊说明,聚合函数均在没有匹配记录(记录集为空)的情况下均返回 null 值。
如果在没有使用group by的语句中使用聚合函数,相当于对所有的行进行分组。
Aggregate (GROUP BY
) Functions
Name | Description |
---|---|
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来解决。