1、统计函数(分组函数)
常用函数一般有五个:COUNT()、SUM()、MIN()、MAX()、AVG()
以上几个操作函数,在表中没有数据的时候,只有COUNT()函数会返回结果(返回0),其他都是NULL。
实际上针对于COUNT()函数有三种使用形式:
①COUNT(*):可以准确地返回表中的全部记录数;
②COUNT(字段):统计不为null的所有数据量;
③COUNT(DISTINCT 字段):消除重复数据之后的结果。
2、分组统计
实际上GROUP BY之所以使用麻烦,是因为分组的时候有一些约定条件:
①如果查询不使用GROUP BY子句,那么select子句中只允许出现统计函数,其他任何字段不允许出现;
②如果查询中使用了GROUP BY子句,那么select子句中只允许出现分组字段、统计函数,其他任何字段都不允许出现;
③统计函数允许嵌套,但是嵌套之后的select子句里面只允许出现嵌套函数,而不允许出现任何字段,包括分组字段。
3、多表查询与分组统计
对于GROUP BY 子句而言是在WHERE之后执行的,所以在使用时可以进行限定查询,也可以进行多表查询。
4、HAVING子句
where子句上不允许出现统计函数(分组函数),因为GROUP BY子句是在WHERE子句之后执行的,那么此时执行WHERE子句时还没有进行分组,就自然无法进行统计。所以在这样的情况下就必须使用HAVING子句来完成。
HAVING是在GROUP BY分组之后才执行的筛选,在HAVING里面可以直接使用统计函数。
说明:WHERE与HAVING的区别:
WHERE子句是在GROUP BY分组之前进行筛选,指的是选出那些可以参与分组的数据,并且WHERE子句之中不允许使用统计函数;
HAVING子句是在GROUP BY分组之后执行的,可以使用统计函数。