示例一、查询出每个部门的编号,名称,位置,部门人数,平均工资
SELECT d.deptno,d.dname,d.loc,
(SELECT COUNT(empno) FROM emp WHERE emp.deptno=d.deptno GROUP BY deptno) con,
(SELECT AVG(sal) FROM emp WHERE emp.deptno=d.deptno GROUP BY deptno) avgsal
FROM dept d
WITH 子句
示例二、使用with子句将emp表中的数据定义为临时表
WITH e AS( SELECT * FROM emp) SELECT * FROM e;
示例三、查询每个部门的编号,名称,位置,部门平均工资,人数
--查询每个部门的编号,名称,位置,部门平均工资,人数 WITH e AS( SELECT deptno dno,ROUND(AVG(sal),2) avgsal,COUNT(empno) con FROM emp GROUP BY deptno ) SELECT d.deptno,d.dname,d.loc,e.avgsal,e.con FROM dept d,e WHERE d.deptno=e.dno(+);
示例四、查询每个部门工资最高的员工编号,姓名,职位,入职日期,工资,部门编号,部门名称,显示结果按部门编号进行排序
WITH e AS( SELECT deptno dno,MAX(sal) maxsal FROM emp GROUP BY deptno ) SELECT em.ename,em.job,em.hiredate,em.sal,d.deptno,d.dname FROM emp em,dept d,e WHERE em.deptno=e.dno AND em.sal=e.maxsal AND d.deptno=e.dno ORDER BY em.deptno;