mysql按照学生分组查询_MySQL分组查询

在对数据表中数据进行统计时,可能需要按照一定的类别分别进行统计,比如,分别统计student表中,gender字段值为na、nv和NULL的学生成绩grade之和

MySQL中,使用GROUP BY按某个字段,或者多个字段中的值,进行分组,字段中值相同的为一组

SELECT 字段名1,字段名2,……

FROM 表名

WHERE BY 字段名1,字段名2,……[HAVING 条件表达式];

参数说明

指定的字段名1、字段名2,是对查询结果分组的依据

HAVING关键字,指定条件表达式,对分组后的内容进行过滤

GROUP BY,一般和聚合函数一起使用,如果,查询的字段出现在GROUP BY后,却没有包含在聚合函数中,该字段显示的是,分组后的第一条记录的值,这样,可能会导致查询结果不符合我们的预期

一、单独使用GROUP BY分组

单独使用GROUP BY关键字,查询的是每个分组中的一条记录

查询student表中的记录,安装gender字段值进行分组

0818b9ca8b590ca3270a3433284dd417.png

可以看出,返回了3条记录,分别是gender字段值为NULL、nv、na的记录,查询结果按照gender字段中不同的值进行了分类,然后,值显示每个分组中的一条记录,意义不大,一般情况下,GROUP BY都和聚合函数一起使用

二、GROUP BY和聚合函数,一起使用

GROUP BY和聚合函数,一起使用,可以统计出某个,或者某些字段在一个分组中的最大值、最小值、平均值

查询student表,按照gender字段值进行分组,计算出每个分组中各有多少名学生

0818b9ca8b590ca3270a3433284dd417.png

可以看出,GROUP BY对gender字段进行了分组,然后,通过COUNT()函数统计出了每组的数量

三、GROUP BY和HAVING关键字,一起使用

HAVING关键字和WHERE关键字的作用相同,都是用于设置条件表达式,对查询结果进行过滤。

两者的区别,HAVING关键字后,可以跟聚合函数,而WHERE关键字不能,通常情况下,HAVING关键字,都是和GROUP BY一起使用,用于对分组后的结果进行过滤

查询student表,按照gender字段进行分组,查询出grade字段值之和小于300的分组

0818b9ca8b590ca3270a3433284dd417.png

可以看出,只有gender字段值为NULL和nv的分组,grade字段值之和小于300

验证查询结果,对gender字段值为na的记录,grade字段值之和进行查询

0818b9ca8b590ca3270a3433284dd417.png

可以看出,gender字段值为na,所有学生的grade字段之和为523

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值