总结一下MySQL中查询记录操作中的GROUP BY语句,查遗补漏。 
表名:testusers,字段记录如图,以前create的直接拿来用,将就一下。(懒即生产力) 

Mysql GROUP 分组总数相加 mysql分组group by_Mysql GROUP 分组总数相加

一)作用:GROUP BY 语句根据一个或多个列对结果集进行分组。会把值相同放到一个组中,最终查询出的结果只会显示组中一条记录。(字母不好理解没关系,看下面的例子秒懂)

二)example: 

1)基本用法: 

根据 sex 字段分组,查询用户名、年龄、电话、性别。 

这就分组成功了!男的一组 女的一组,还有一组那啥,咳咳,搞不清楚的,但是都只显示了组中一条记录,我们的效果不够明显,接着看下面的例子。)

Mysql GROUP 分组总数相加 mysql分组group by_Mysql GROUP 分组总数相加_02

2)GROUP BY 语句中的GROUP_CONCAT()函数 

根据sex 字段进行分组并查看username字段和age字段的详细信息。(这下对基本用法就很好理解了。因为他默认只显示了组中一条记录,如果想看组内所以的用户信息,就需要用到GROUP_CONCAT()函数。接着往下↓)

Mysql GROUP 分组总数相加 mysql分组group by_Mysql GROUP 分组总数相加_03

3)COUNT()函数:统计记录总数 
根据sex 字段分组,查询性别和用户名,年龄的详细信息并统计各组用户数量。 
(查出来记录以后自己数?太萌了吧?利用COUNT()函数统计记录总数。当然细心的兄dei已经发现问题了,为什么只有三个男的,COUNT()函数统计出来四个?[难道有两根?!] ,咳咳,是因为在COUNT()函数中,写COUNT(*)会统计我们表中的NULL值,如果不想统计NULL值,请写COUNT(字段名)。看我们上面的表中,最后一条记录的username是NULL,所以只有三个男的却统计出四根diao.呸,统计出四个男生。PS:代码段中AS xxx=取别名)

Mysql GROUP 分组总数相加 mysql分组group by_mysql_04

4)加WHERE条件 
在年龄大于等于18的范围内,根据sex分组,查询性别和用户名、年龄的详细信息并统计各组用户数量(就是在上条基础上加了WHERE条件,”未满18岁,禁止观看!”) 

Mysql GROUP 分组总数相加 mysql分组group by_mysql_05

5)聚合函数[‘SUM()求和函数’,’MAX()函数:求最大值’,’MIN()函数:求最小值’,’AVG()函数:求平均值’]。一个例子整合运用(计算每组用户薪水的各项值)。

Mysql GROUP 分组总数相加 mysql分组group by_mysql_06

6):HAVING 子句:对分组结果进行二次筛选 

根据性别分组,查询性别和用户名,年龄的详细信息并统计各组用户总数,得出结果后进行二次筛选出用户总数在5人及以上的组。相当于WHERE是一次筛选,HAVING是在二/再次筛选.

Mysql GROUP 分组总数相加 mysql分组group by_字段_07

7)WITH ROLLUP子句: 

可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。 

也就是说,当我们进行分组操作以后,又想再看总的信息,或者还有其他类似操作,普通GROUP BY语句是不能实现的,就需要用到有 WITH ROLLUP 子句的 GROUP BY语句 

再肤浅一点,就是会在记录末尾添加一条记录,是上面所有记录的总和。

Mysql GROUP 分组总数相加 mysql分组group by_字段_08