SELECT deptno, AVG(sal) FROM emp GROUPBY deptno HAVINGSUM(sal) >=1000ORDERBYAVG(sal) DESC;
6. 查询 emp 表中薪水最少和薪水最大员工的姓名和薪水,并按薪水从大到小排序。
1 2 3
SELECT ename, sal FROM emp WHERE sal = (SELECTMIN(sal) FROM emp) OR sal = (SELECTMAX(sal) FROM emp) ORDERBY sal DESC;
7. 列出薪金比 SMITH 高的所有员工。
1
SELECT*FROM emp WHERE sal > (SELECT sal FROM emp WHERE ename ='SMITH');
8. 列出所有员工的姓名及其直接上级领导的姓名。
1 2 3
SELECT e.ename AS 员工姓名, m.ename AS 上级姓名 FROM emp e, emp m WHERE e.mgr = m.empno;
9. 列出受雇日期早于其直接上级的所有员工的编号、姓名、部门名称。
1 2 3
SELECT e.empno, e.ename, d.dname FROM emp e, emp m, dept d WHERE e.mgr = m.empno AND e.hiredate < m.hiredate AND e.deptno = d.deptno;
10. 列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。
1 2 3
SELECT d.dname, e.* FROM dept d LEFTJOIN emp e ON d.deptno = e.deptno;
11. 列出所有 CLERK(办事员)的部门名称、部门人数。
1 2 3 4
SELECT d.dname, COUNT(e.ename) FROM emp e, dept d WHERE e.deptno = d.deptno AND e.job ='CLERK' GROUPBY d.dname;
12. 列出最低薪金大于 1500 的各种工作及从事此工作的全部雇员人数。
1 2 3 4
SELECT job, COUNT(ename) FROM emp GROUPBY job HAVINGMIN(sal) >1500;
13. 列出在部门 SALES(销售部)工作的员工的姓名,假定不知道销售部的部门编号。
1 2 3
SELECT ename FROM emp WHERE deptno = (SELECT deptno FROM dept WHERE dname ='SALES');
14. 列出薪金高于公司平均薪金的所有员工、所在部门、上级领导、公司的等级工资。
1 2 3 4
SELECT e.*, d.dname, m.ename AS 上级姓名, s.grade FROM emp e, dept d, emp m, salgrade s WHERE e.deptno = d.deptno AND e.mgr = m.empno AND e.sal BETWEEN s.losal AND s.hisal AND e.sal > (SELECTAVG(sal) FROM emp);
15. 列出与 SCOTT 从事相同工作的所有员工的编号、姓名、职位及其部门名称。
1 2 3 4
SELECT e.empno, e.ename, e.job, d.dname FROM emp e, dept d WHERE e.deptno = d.deptno AND e.job = (SELECT job FROM emp WHERE ename ='SCOTT') AND e.ename !='SCOTT';
16. 列出薪金等于部门 30 中员工的薪金的所有员工的姓名和薪金。
1 2 3
SELECT ename, sal FROM emp WHERE sal IN (SELECT sal FROM emp WHERE deptno =30);
17. 列出薪金高于在部门 30 工作的所有员工的薪金的员工姓名、薪金和部门名称。
1 2 3
SELECT e.ename, e.sal, d.dname FROM emp e, dept d WHERE e.deptno = d.deptno AND e.sal > (SELECTMAX(sal) FROM emp WHERE deptno =30);
18. 列出在每个部门工作的员工数量、平均工资和平均服务期限。
1 2 3
SELECT deptno, COUNT(ename), AVG(sal), ROUND(AVG(SYSDATE - hiredate)) AS 平均服务天数 FROM emp GROUPBY deptno;
19. 列出所有员工的姓名、部门名称和工资。
1 2 3
SELECT e.ename, d.dname, e.sal FROM emp e, dept d WHERE e.deptno = d.deptno;
20. 列出所有部门的详细信息和部门人数。
1 2 3 4
SELECT d.*, COUNT(e.ename) FROM dept d LEFTJOIN emp e ON d.deptno = e.deptno GROUPBY d.deptno, d.dname, d.loc;
21. 列出各种工作的最低工资及从事此工作的雇员姓名。
1 2 3
SELECT e.ename, e.sal FROM emp e WHERE e.sal IN (SELECTMIN(sal) FROM emp GROUPBY job);
22. 列出各个部门的 MANAGER(经理)的最低薪金。
1 2 3 4
SELECT deptno, MIN(sal) FROM emp WHERE job ='MANAGER' GROUPBY deptno;
23. 列出员工的年工资,按年薪从低到高排序。
1 2 3
SELECT ename, sal *12AS 年薪 FROM emp ORDERBY 年薪 ASC;
24. 查出员工的信息,并要求这些员工的主管薪水超过 3000。
1 2 3
SELECT e.* FROM emp e, emp m WHERE e.mgr = m.empno AND m.sal >3000;
25. 求出部门名称中带 S 字符的部门员工的工资合计、部门人数。
1 2 3 4
SELECT d.dname, SUM(e.sal), COUNT(e.ename) FROM emp e, dept d WHERE e.deptno = d.deptno AND d.dname LIKE'%S%' GROUPBY d.dname;
26. 查询公司员工工资的最大值、最小值、平均值、总和。
1
SELECTMAX(sal), MIN(sal), ROUND(AVG(sal)), SUM(sal) FROM emp;
27. 查询各 job 的员工工资的最大值、最小值、平均值、总和。
1 2 3
SELECT job, MAX(sal), MIN(sal), ROUND(AVG(sal)), SUM(sal) FROM emp GROUPBY job;