多行函数和分组

# 分组查询 

--group by 非聚合字段

select grade_id,count(*) from student group by grade_id; --每个年级各多少?

--套路:group by...根据count(*)前面的字段分组,想想场景结果,根据什么分组

select dept_id,count(*) from s_emp group by dept_id; --查询每部门人数


--查询每门课程的平均分

select subjectid,avg(stdentresult) from result group by subjectid order by studentresult;

--统计每学期男女同学的人数? --先年级分组,后男女分组

select gradeid,sex,count(*) from student group by gradeid,sex order by gradeid; --多列分组

# having

--统计每个年级的人数,低于18人不显示
---对分组之后的数据,再次进行条件过滤的话,不能用where,要用having.

select gradeid,count(*) from student group by gradeid having count(*)>18;


--统计每个部门的最高工资,部门人数低于3人不显示

select dept_id,max(salary) from s_emp group by dept_id having count(*)>2;


---统计每个部门中工资高于1400的人数,低于2人的不显示

select dept_id,count(*) 
from s_emp 
where salary >1400 
group by dept_id
having count(*) >1;
原文地址:https://www.cnblogs.com/wzhqzm/p/13358059.html