/* 分组函数 不能再select子句中出现普通的列,除非这个列在group by中给出 所有的空值都会被分为一组 分组过滤 SELECT FROM WHERE GROUPBY HAVING ORDERBY */ --求出每种工作的平均薪资 SELECT JOB,AVG(SAL),MAX(SAL),MIN(SAL) FROM EMP GROUP BY JOB; SELECT MAX(SAL) FROM EMP; SELECT DEPTNO,AVG(SAL) FROM EMP GROUP BY DEPTNO; --查询每个部门中,不同工作的平均薪资 SELECT DEPTNO,JOB,AVG(SAL) FROM EMP GROUP BY DEPTNO ,JOB ORDER BY DEPTNO,JOB; --分组函数语句中,select子句中出现的每一个列必须出现在出现在group by后面, --除非是一个组函数,而且需要遵循组函数的使用规则 SELECT DEPTNO,AVG(SAL),MIN(ENAME) FROM EMP GROUP BY DEPTNO; --按照津贴进行分组 SELECT COMM,COUNT(*) FROM EMP GROUP BY COMM; --查询 每个部门中 薪资大于2000员工的平均薪资 SELECT DEPTNO,AVG(SAL) FROM EMP WHERE SAL>2000 GROUP BY DEPTNO; --查询部门的平均薪资,如果平均薪资低于2000就过滤掉 SELECT DEPTNO,AVG(SAL) FROM EMP GROUP BY DEPTNO HAVING AVG(SAL)>2000; --查询薪资大于等于2500的员工,按照工作进行分组,然后求出平均薪资大于等于3000的工作 SELECT * FROM EMP;--14 SELECT * FROM EMP WHERE SAL>=2500;--5 SELECT JOB,AVG(SAL) FROM EMP WHERE SAL>=2500 GROUP BY JOB;--3 SELECT JOB,AVG(SAL) FROM EMP WHERE SAL>=2500 GROUP BY JOB HAVING AVG(SAL)>=3000;--2 SELECT JOB,AVG(SAL) FROM EMP WHERE SAL>=2500 GROUP BY JOB HAVING AVG(SAL)>=3000 ORDER BY AVG(SAL) DESC;