分组查询

按照某个或多个数据进行分组

分组查询语法:group by 分组字段

[group by 字段] [having (条件表达式)]

having:过滤分组

以下表为例

MySQL 分组查询

 

示例1:按照性别分组。分别查询男、女同学的平均分

MySQL 分组查询

 

示例2:按照性别分组。分别查询男、女同学的平均分,人数

MySQL 分组查询

 

示例3:按照性别分组。 分别查询男、女同学的平均分,人数要求:分数低于70分的人,不参与分组

MySQL 分组查询

 

示例4:按照性别分组。 分别查询男、女同学的平均分,人数要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人

MySQL 分组查询

 

示例5:多字段分组

分组从左往右,先按照第一个字段进行,然后对第一个字段相同的值按照第二个字段分组,以此类推。

select price,count(*) as total from fruits group by price,id;

 

补充with rollup 关键字

使用with rollup 后,会在所有分组记录后新增一条记录,该记录计算查询出的所有纪律的总和,即统计记录数量。

MySQL 分组查询


注意:where 和 having 的区别

  • where在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来
  • where后不可以跟聚合函数,having可以进行聚合函数的判断。

相关文章: