HAVING子句
概念:
HAVING子句查询,就是对分组统计函数统计出的结果进行果过滤的子句。
HAVING子句使用的基本语法:
查询出平均工资高于2000的职位的名称和平均工资
SELECT job ,AVG(sal)
FROM emp
GROUP BY job
HAVING AVG(sal);
查询出非销售人员的工作名称以及从事同一工作的雇员的月工资总和,并且要求从事一工作的雇员工资合计大于五千,输出结果按照雇员的薪资之和升序排列
SELECT job,SUM(sal) 工资总和
FROM emp
WHERE job<>'SALESMAN'
GROUP BY job
HAVING SUM(sal)>5000
ORDER BY 工资总和 ASC;
查询出薪资低于平均工资的雇员信息
SELECT *
FROM emp
WHEER sal<(
SELECT AVG(sal)
FROM emp
);
说明WHERE子句和HAVING子句的区别
WHERE子句在GROUP BY 子句之前执行,不能在WHERE字句中使用统计函数。
HAVING子句在GROUP BY 子句之后执行,可以在HAVING字句中对统计函数进行过滤。
WHERE子查询
概念:
子查询就是将一个查询的结果作为另外一个查询(主查询)的数据来源或者判断条件的查询
查询出低于平均工资的雇员信息
SELECT *
FROM emp
WHERE sal<(
SELECT AVG(sal)
FROM emp);
查询出公司最早入职的雇员信息
SELECT *
FROM emp
WHERE hiredate=(SELECT MIN(hiredate) FROM emp);
查询出与scott从事同一工作,并且工资相同的雇员的信息
SELECT *
FROM emp
WHERE (job,sal)=(SELECT job,sal FROM emp WHERE ename='SCOTT')
AND ename <>