1. 列出所有至少有一个员工的部门。
SELECT dname FROM dept WHERE deptno IN (SELECT deptno FROM emp GROUP BY deptno);
2. 列出薪金比"SMITH"多的所有员工。
SELECT ename FROM emp WHERE sal > (SELECT sal FROM emp WHERE ename='SMITH');
3. 列出所有员工的姓名及其直接上级的姓名。
SELECT ename,(SELECT ename FROM emp b WHERE empno = a.mgr) FROM emp a ;
4. 列出受雇日期早于其直属上级的姓名。
SELECT ename FROM emp a WHERE hiredate < (SELECT hiredate FROM emp WHERE empno=a.mgr);
5. 列出部门名称和这些部门员工的信息,同时列出没有员工的部门。
SELECT dname,emp.* FROM dept LEFT JOIN emp ON dept.deptno=emp.deptno;
6. 列出所有工作为“CLERK”办事员的姓名及其部门名称。
SELECT ename,dname FROM emp LEFT JOIN dept ON dept.deptno=emp.deptno WHERE emp.job='CLERK';
7. 列出最低薪金大于1500的各种工作。
SELECT job FROM emp GROUP BY job HAVING MIN(sal) > 1500;
8. 列出在部门‘SALES’销售部工作的员工的姓名,假定不知道销售部的部门编号。
SELECT ename FROM emp WHERE deptno = ( SELECT deptno FROM dept WHERE dname='SALES');
9. 列出薪金高于公司平均水平的员工。
SELECT ename FROM emp WHERE sal > (SELECT SUM(sal)/COUNT(sal) FROM emp);
10. 列出与员工‘SCOTT’从事相同工作的员工。
SELECT ename FROM emp WHERE job = (SELECT job FROM emp WHERE ename = 'SCOTT') AND ename <> 'SCOTT';
11. 列出薪金等于部门编号30员工的所有员工的姓名和薪金。
SELECT ename,sal FROM emp WHERE sal = ANY (SELECT sal FROM emp WHERE deptno= '30' ) AND deptno <> '30' ;
12. 列出薪金高于部门编号30所有员工的姓名和薪金。
SELECT ename,sal FROM emp WHERE sal > (SELECT MAX(sal) FROM emp WHERE deptno= '30' ) AND deptno <> '30' ;
13. 列出在每个部门工作的员工数量,平均工资和平均服务期限。
SELECT deptno,COUNT(*),AVG(sal),AVG(SYSDATE-hiredate) FROM emp GROUP BY deptno;
14. 列出所有员工的姓名,部门名称和工资。
SELECT ename,nvl(sal,sal+comm),dname FROM emp,dept WHERE dept.deptno=emp.deptno;
15. 列出所有部门的详细信息和部门人数。
SELECT dept.*,count(*) FROM dept,emp WHERE dept.deptno=emp.deptno GROUP BY dept.deptno,dname,loc;
16. 列出各种工作的最低工资。
SELECT job,min(nvl(sal,sal+comm)) FROM emp GROUP BY job;
17. 列出工作为“MANAGER”的员工的最低薪金。
SELECT job,min(sal) FROM emp WHERE job='MANAGER' GROUP BY job;