快捷搜索:  汽车  科技

mysql查询分组与汇总(通过几个练习理清mysql分组查询)

mysql查询分组与汇总(通过几个练习理清mysql分组查询)select sex avg(math) count(*) from stu group by sex;查询男生和女生各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组select sex avg(math) count(*) from stu where math > 70 group by sex;查询男生和女生各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,且分组之后只显示人数大于2个的select sex avg(math) count(*) from stu where math > 70 group by sex having count(*) > 2;where 和 having 区别:

数据准备:创建一个学生表,并插入数据,代码如下:

-- 删除stu表 drop table if exists stu; -- 创建stu表 CREATE TABLE stu ( id int -- 编号 name varchar(20) -- 姓名 age int -- 年龄 sex varchar(5) -- 性别 address varchar(100) -- 地址 math double(5 2) -- 数学成绩 english double(5 2) -- 英语成绩 hire_date date -- 入学时间 ); -- 添加数据 INSERT INTO stu(id NAME age sex address math english hire_date) VALUES (1 '赵大' 55 '男' '杭州' 66 78 '1995-09-01') (2 '钱二' 45 '女' '深圳' 98 87 '1998-09-01') (3 '孙三' 55 '男' '香港' 56 77 '1999-09-02') (4 '李四' 20 '女' '湖南' 76 65 '1997-09-05') (5 '周五' 20 '男' '湖南' 86 NULL '1998-09-01') (6 '吴六' 57 '男' '香港' 99 99 '1998-09-01') (7 '郑七' 22 '女' '香港' 99 99 '1998-09-01') (8 '王八衰' 18 '男' '南京' 56 65 '1994-09-02');

mysql查询分组与汇总(通过几个练习理清mysql分组查询)(1)

创建成功的学生表

语法

SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤]; 练习

  • 查询男生和女生各自的数学平均分

SELECT sex AVG(math) FROM stu GROUP BY sex;

mysql查询分组与汇总(通过几个练习理清mysql分组查询)(2)

注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义

select name sex avg(math) from stu group by sex; -- 这里查询name字段就没有任何意义

mysql查询分组与汇总(通过几个练习理清mysql分组查询)(3)

虽然能查出结果,但是没有意义

  • 查询男生和女生各自的数学平均分,以及各自的人数

select sex avg(math) count(*) from stu group by sex;

mysql查询分组与汇总(通过几个练习理清mysql分组查询)(4)

  • 查询男生和女生各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组

select sex avg(math) count(*) from stu where math > 70 group by sex;

mysql查询分组与汇总(通过几个练习理清mysql分组查询)(5)

  • 查询男生和女生各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,且分组之后只显示人数大于2个的

select sex avg(math) count(*) from stu where math > 70 group by sex having count(*) > 2;

mysql查询分组与汇总(通过几个练习理清mysql分组查询)(6)

where 和 having 区别:

  • 执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。
  • 可判断的条件不一样:where 不能对聚合函数进行判断,having 可以。

猜您喜欢: