#进阶六:分组查询(group by)/*语法:select 查询列表from 表名where 筛选条件group by 分组列表having 分组后筛选order by 排序列表;执行顺序: from子句 where子句 group by子句 having子句 select子句 order by子句特点:1.查询列表往往是:分组函数和被分组的字段2.分组查询中的筛选分为两类: 筛选的基表 使用的关键词 分组前筛选 原始表 where 分组后筛选 分组后的结果集 having*/#一:简单的分组#案例一:查询每个工种的员工的平均工资SELECT AVG(salary),job_idFROM employeesGROUP BY job_id;#二:可以实现分组前的筛选#案例一:查询邮箱中包含a字符的每个部门的最高工资SELECT MAX(salary),department_idFROM employeesWHERE email LIKE '%a%'GROUP BY department_id;#三:可以实现分组后的筛选(having)#案例一:查询哪个部门的员工个数大于5SELECT department_id,COUNT(*)FROM employeesGROUP BY department_idHAVING COUNT(*)>5;#四:可以实现升序#案例一:查询有奖金的员工的最高工资>6000的工种编号和最高工资,按最高工资升序SELECT job_id,MAX(salary)FROM employeesWHERE commission_pct IS NULLGROUP BY jod_idHAVING MAX(salary)>6000ORDER BY MAX(salary) ASC; #五:按多个字段分组#案例一:查询每个工种每个部门的最低工资,并按最低工资降序 #提示:工种和部门都一样才是一组SELECT job_id,department_id,MIN(salary)FROM employeesGROUP BY department_id,job_idORDER BY MIN(salary) DESC;