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字段值进行分组 可以看出,返回了3条记录,分别是gender字段值为NULL、nv、na的记录,查询结果按照gender字段中不同的值进行了分类,然后,值显示每个分组中的一条记录,意义不大,一般情况下,GROUP BY都和聚合函数一起使用 二、GROUP BY和聚合函数,一起使用GROUP BY和聚合函数,一起使用,可以统计出某个,或者某些字段在一个分组中的最大值、最小值、平均值 查询student表,按照gender字段值进行分组,计算出每个分组中各有多少名学生 可以看出,GROUP BY对gender字段进行了分组,然后,通过COUNT()函数统计出了每组的数量 三、GROUP BY和HAVING关键字,一起使用HAVING关键字和WHERE关键字的作用相同,都是用于设置条件表达式,对查询结果进行过滤。 两者的区别,HAVING关键字后,可以跟聚合函数,而WHERE关键字不能,通常情况下,HAVING关键字,都是和GROUP BY一起使用,用于对分组后的结果进行过滤 查询student表,按照gender字段进行分组,查询出grade字段值之和小于300的分组 可以看出,只有gender字段值为NULL和nv的分组,grade字段值之和小于300 验证查询结果,对gender字段值为na的记录,grade字段值之和进行查询 可以看出,gender字段值为na,所有学生的grade字段之和为523 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |