1. 各個部門平均、最大、最小工資、人數,按照部門號升序排列。
SELECT deptno AS 部門號,AVG(sal) AS 平均工資 ,MAX(sal) AS 最高工資,MIN(sal) AS 最低工資 ,COUNT(*) AS 人數 FROM emp GROUP BY deptno ORDER BY deptno ASC;
2. 各個部門中工資大於5000的員工人數。
SELECT deptno,COUNT(*) FROM emp WHERE sal > 5000 GROUP BY deptno;
3. 各個部門平均工資和人數,按照部門名字升序排列。
SELECT DNAME,AVG(SAL),COUNT(*) FROM (SELECT (SELECT DEPT.DNAME FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO) DNAME,EMP.SAL FROM EMP) GROUP BY DNAME ORDER BY DNAME;
4. 列出每個部門中有同樣工資的員工的統計信息,列出他們的部門號,工資,人數。
SELECT EMP1.DEPTNO,EMP1.SAL,COUNT(*) FROM EMP EMP1,EMP EMP2
WHERE EMP1.DEPTNO = EMP2.DEPTNO
AND EMP1.SAL = EMP2.SAL
AND EMP1.EMPNO <> EMP2.EMPNO
GROUP BY EMP1.DEPTNO,EMP1.SAL;
5. 列出同部門中工資高於1000 的員工數量超過2 人的部門,顯示部門名字、地區名稱。
SELECT
D.DNAME,D.LOC,COUNT(*)
FROM EMP E,DEPT D
WHERE E.DEPTNO = D.DEPTNO AND
E.SAL > 1000
GROUP BY D.DNAME,D.LOC
HAVING COUNT(*) > 2;
6. 哪些員工的工資,高於整個公司的平均工資,列出員工的名字和工資(降序)。
SELECT ENAME,SAL
FROM EMP
WHERE SAL> (
SELECT AVG(SAL)
FROM EMP
)
ORDER BY SAL DESC;
7. 哪些員工的工資,介於10號 和30號部門平均工資之間。
SELECT ENAME,SAL
FROM EMP
WHERE SAL
BETWEEN
(SELECT AVG(SAL) FROM EMP
WHERE DEPTNO = 10)
AND (SELECT AVG(SAL) FROM EMP
WHERE DEPTNO = 80);
SELECT * FROM EMP
8. 所在部門平均工資高於5000 的員工名字。
SELECT ENAME,SAL
FROM EMP
WHERE DEPTNO IN
(SELECT DEPTNO FROM EMP
GROUP BY DEPTNO
HAVING AVG(SAL) > 5000);
9. 列出各個部門中工資最高的員工的信息:名字、部門號、工資。
SELECT ENAME
,SAL ,DEPTNO
FROM EMP
WHERE (DEPTNO,SAL ) IN
(SELECT DEPTNO,MAX(SAL)
FROM EMP
GROUP BY DEPTNO);
10. 最高的部門平均工資是多少。
SELECT MAX(AVGSALARY)
FROM(SELECT DEPTNO,AVG(SAL) AVGSALARY
FROM EMP
GROUP BY DEPTNO);