dql 分组查询和条件查询

分组查询 

公式:select 字段列表 from 表名 【where 分组前的条件】 group by 分组字段名  【having  分组之后的查询条件 】

注意: 分组之后 查询字段 只能写 分组字段名 或者 聚合函数  ,写其他字段没有意义

where 和having 的区别: where 是在分组前 进行条件限定 不满足条件的不参与 分组,having 是在分组之后的结果进行过滤; where 中不能对聚合函数 (sum,count这种)进行判断,而having 可以

执行顺序: where>聚合函数>having

 比如 查询班级表中 男同学和女同学的 数学平均成绩

select sex, avg(math) from stu group by sex;

查询 班级男女同学 数学平均成绩 并计算 总人数 

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

------------------------------------------------------------成绩低于70分的 不参与 分组,所以使用where 在分组前进行条件限定

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

-------------------------------------------------------------------------------------------------,总人数要大于2

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

 

posted @ 2022-10-16 16:47  索隆111  阅读(115)  评论(0)    收藏  举报