-- 1.列出至少有一个员工的所有部门。
-- SELECT DNAME FROM dept WHERE DEPTNO IN(SELECT DEPTNO FROM emp);
-- 2.列出薪金比“SMITH”多或者相等的所有员工。
-- SELECT * FROM emp WHERE SAL > (SELECT SAL FROM emp WHERE ENAME = 'SMITH');
-- 3.列出所有员工的姓名及其直接上级的姓名。
-- SELECT A.ENAME,(SELECT ENAME FROM emp B WHERE B.EMPNO =A.MGR) AS MGR_NAME FROM emp A;
-- 4.列出受雇日期早于其直接上级的所有员工。
-- SELECT A.* FROM emp A WHERE A.HIREDATE<(SELECT HIREDATE FROM emp B WHERE B.EMPNO=A.MGR);
-- 5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门
-- SELECT A.DNAME,B.* FROM dept A LEFT JOIN emp B ON A.DEPTNO=B.DEPTNO;
-- 6.列出所有“CLERK”(办事员)的姓名及其部门名称。
-- SELECT A.ENAME,B.DNAME FROM emp A JOIN dept B ON A.DEPTNO=B.DEPTNO AND A.JOB='CLERK';
- 内连接:join (等值连接或者叫内连接):只返回两个表中连接字段相等的行。
-- 7.列出最低薪金大于1500的各种工作。
-- SELECT DISTINCT JOB AS HIGHSAL_JOB FROM emp GROUP BY JOB HAVING MIN(SAL)>1500;
- DISTINCT:用于返回唯一不同的值。
- HAVING:筛选分组后的各组数据。
-- 8.列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。
-- SELECT ENAME FROM emp WHERE DEPTNO=(SELECT DEPTNO FROM dept WHERE DNAME='SALES');
-- 9.列出与“SCOTT”从事相同工作的所有员工。
-- SELECT * FROM emp WHERE JOB=(SELECT JOB FROM emp WHERE ENAME='SCOTT');
-- 10.列出薪金高于公司平均薪金的所有员工。
-- SELECT * FROM emp WHERE SAL>(SELECT AVG(SAL) FROM emp);
-- 11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。
-- SELECT A.ENAME,A.SAL FROM emp A WHERE A.SAL IN (SELECT B.SAL FROM emp B WHERE B.DEPTNO=30);
-- 12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。
-- SELECT ENAME,SAL FROM emp WHERE SAL>(SELECT MAX(SAL) FROM emp WHERE DEPTNO=30);
-- 13.列出在每个部门工作的部门名称,员工数量、平均工资。
-- SELECT (SELECT B.DNAME FROM dept B WHERE A.DEPTNO=B.DEPTNO) AS DEPT_NAME ,COUNT(DEPTNO) AS DEPT_COUNT,AVG(SAL) AS DEPT_AVGSAL FROM emp A GROUP BY DEPTNO;
-- 14.列出所有员工的姓名、部门名称和工资(含奖金)。
-- SELECT A.ENAME,(SELECT B.DNAME FROM dept B WHERE B.DEPTNO=A.DEPTNO) AS DNAME,SAL FROM emp A;
-- 15.列出所有部门的详细信息和部门人数。
-- SELECT A.DEPTNO,A.DNAME,A.LOC,(SELECT COUNT(DEPTNO) FROM emp B WHERE B.DEPTNO=A.DEPTNO GROUP BY B.DEPTNO) AS DEPT_COUNT FROM dept A;
-- 16.列出各种工作的最低工资。
-- SELECT JOB,MIN(SAL) FROM emp GROUP BY JOB;
-- 17.列出各个MANAGER(经理)的最低薪金。
-- SELECT DEPTNO,MIN(SAL) FROM emp WHERE JOB='MANAGER' GROUP BY DEPTNO;
-- 18.列出所有员工的年工资,按年薪从低到高排序。
-- SELECT ENAME,(SAL)*12 AS SAL_PERSAL FROM emp ORDER BY SAL_PERSAL;