–1.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。
SELECT
A.DNAME
,B.EMPNO
,B.ENAME
,B.JOB
,B.MGR
,B.HIREDATE
,B.SAL
,B.COMM
,B.DEPTNO
FROM DEPT A
LEFT JOIN EMP B
ON A.DEPTNO=B.DEPTNO;
–2.列出所有“CLERK”(办事员)的姓名及其部门名称。
SELECT
A.ENAME
,B.DNAME
FROM EMP A
LEFT JOIN DEPT B
ON A.DEPTNO=B.DEPTNO
WHERE A.JOB='CLERK';
–3.列出所有员工的姓名、部门名称和工资。
SELECT
A.ENAME
,B.DNAME
,A.SAL
FROM EMP A
LEFT JOIN DEPT B
ON A.DEPTNO=B.DEPTNO;
–4.列出所有员工的姓名及其直接上级的姓名。
SELECT
B.ENAME 员工
,A.ENAME 领导
FROM EMP A
inner JOIN EMP B
ON A.EMPNO=B.MGR;
–5.查询 EMP 表和 DEPT 表中 工资大于 2000 的员工姓名、薪资、以及部门名称
SELECT
A.ENAME
,A.SAL
,B.DNAME
FROM EMP A
LEFT JOIN DEPT B
ON A.DEPTNO=B.DEPTNO
WHERE A.SAL>2000;
–6.查询 EMP 表和 DEPT 表中最高工资和最低工资的部门名称
SELECT
A1.DNAME
FROM DEPT A1
INNER JOIN (SELECT
B.DEPTNO
FROM EMP B
WHERE B.SAL=( SELECT
MIN(A.SAL)
FROM EMP A
)
OR B.SAL=( SELECT
MAX(A.SAL)
FROM EMP A
)
)A2
ON A1.DEPTNO=A2.DEPTNO ;
------------------------------------------------
SELECT
A1.DNAME
FROM DEPT A1
INNER JOIN (SELECT
B.DEPTNO
FROM EMP B
WHERE B.SAL IN( SELECT MIN(A.SAL) FROM EMP A
UNION
SELECT MAX(A.SAL) FROM EMP A
)
)A2
ON A1.DEPTNO = A2.DEPTNO ;
–7.查询 EMP 表和 DEPT 表中 员工人数大于3的部门名称以及人工人数
SELECT
B.DNAME
,COUNT(A.EMPNO)
FROM EMP A
LEFT JOIN DEPT B
ON A.DEPTNO=B.DEPTNO
GROUP BY B.DNAME
HAVING COUNT(A.EMPNO)>3;
–8.查询 EMP 表和 DEPT 表中 所有员工的详细信息
SELECT
A.EMPNO,
A.ENAME,
A.JOB,
A.MGR,
A.HIREDATE,
A.SAL,
A.COMM,
A.DEPTNO
,B.DNAME
,B.LOC
FROM EMP A
INNER JOIN DEPT B
ON A.DEPTNO=B.DEPTNO;
–9.查询 EMP 表和 DEPT 表中 部门名称是 ‘RESEARCH’的最高工资、最低工资、平均工资、员工人数
SELECT
MAX(B.SAL)
,MIN(B.SAL)
,AVG(B.SAL)
,COUNT(B.EMPNO)
FROM DEPT A
LEFT JOIN EMP B
ON A.DEPTNO=B.DEPTNO
WHERE A.DNAME='RESEARCH';