一、作用

  分组查询用于将数据库中的数据按指定列进行分组,使用 group by 子句将表中的数据分为若干组。

二、语法

select 查询列表 
from表名 
[where 筛选条件] 
[group by 分组列表
[having 分组条件] ]
[order by 排序列表 [asc|desc] ] ;

三、例子

  表名为 student

1、表结构

类型长度
idint11主键
namevarchar255
ageint255
classvarchar11

2、数据表

idnameageclass
1小张10一班
2小王12二班
3小姣18二班
4小兴15一班
5小易7一班
6小梦20二班

3、实例

1)统计每个班级的人数
select class,count(*) as 人数 
from student
group by class;

  运行结果:

class人数
一班3
二班3
2)分组显示每个班级的所有学生信息

  group by 和 group_concat 函数结合使用。

select group_concat(id) id,group_concat(name) name,class 
from student
group by class;

  运行结果:

idnameclass
1,4,5小张,小兴,小易一班
2,3,6小王,小姣,小梦二班
3)获取每个班中年龄大于 12 的学生
select group_concat(id) id,group_concat(name) name,class 
from student
where age>12
group by class

  运行结果:

idnameclass
4小兴一班
3,6小姣,小梦二班
4)显示平均年龄大于 15 的班级
select class   
from student
group by class  
having avg(age)>15

  运行结果:

class
二班

四、筛选条件的分类

  分组查询中的筛选条件分为两类

数据源位置关键字
分组前筛选原始表在 group by 前where
分组后筛选分组后的结果集在 group by 后having

标题:MySQL中的分组查询
作者:Yi-Xing
地址:http://47.94.239.232/articles/2019/10/08/1570521176176.html
博客中若有不恰当的地方,请您一定要告诉我。前路崎岖,望我们可以互相帮助,并肩前行!