-- 分组查询:(group by)
-- 注意事项 查询字段:分组的字段,聚合函数
-- 分组查询加入where条件,必须先执行where条件,再去分组,如果满足条件才能分组
-- 需求:按照性别分组,分别求出男,女的数学平均分SELECT
sex,
AVG(math) '数学成绩平均分'
FROM
student
GROUP BY sex ;-- 需求:按照性别分组,分别求出男女的数学平均分以及总人数
SELECT
sex '性别', -- 分组字段
AVG(math) '数学平均分', -- 数学平均分
COUNT(id) '人数'
FROM
student
GROUP BY sex ;-- 需求:按照性别分组,分别求出男,女的数学平均分以及总人数 条件:数学成绩不大于70分的人不参与分组
SELECT
sex '性别',
AVG(math) '数学平均分',
COUNT(id) '人数'
FROM
student
WHERE math > 70 -- 条件判断
GROUP BY sex ; -- 分组-- 筛选(having):先进行分组,然后才筛选,而且having后可以跟聚合函数,ground by不能使用聚合函数
-- 需求需求:按照性别分组,分别求出男,女的数学平均分以及总人数 条件1):数学成绩不大于70分的人不参与分组
-- 条件2):总人数大于2个的人
SELECT
sex,
AVG(math),
COUNT(id)
FROM
student
WHERE math > 70
GROUP BY sex
HAVING COUNT(id) > 2 ;-- 简化
SELECT
sex '性别',
AVG(math) '数学平均分',
COUNT(id) '人数'
FROM
student
WHERE math > 70
GROUP BY sex
HAVING '人数' > 2 ;/*
having 和 group by的区别?
group by之前执行where语句,后面才是分组,having 放在group by之后
group by后面跟的分组字段,不能使用聚合函数;而having后面是可以使用聚合函数的!
*/