1. 程式人生 > >SQL複雜查詢(三)

SQL複雜查詢(三)

11.列出公司各個工資等級僱員的數量、平均工資
確定所需要的資料表:
emp表:僱員的平均工資
salgrade表:工資等級

確定已知的關聯欄位:
emp.sal BETWEEN salgrade.losal AND salgrade.hisal

SELECT s.grade,COUNT(e.empno),AVG(e.sal)
FROM emp e ,salgrade s 
WHERE e.sal BETWEEN s.losal AND s.hisal
GROUP BY s.grade;

12.列出薪金高於在部門30工作的所有員工的薪金的員工名稱和薪金、部門名稱
確定所需要的資料表:
emp表:找出所有在30部門工作的僱員的工資
emp表:顯示僱員姓名
dept表:部門名稱


確定已知的關聯欄位:
emp.deptno=dept.deptno

12.1 找出在部門30工作的所有員工名稱和薪金

SELECT e.ename,e.sal FROM emp e WHERE e.deptno=30;

12.2 找出薪金高於部門30的員工資訊,部門資訊,引入emp表,查詢姓名和薪金
SELECT e.ename,e.sal,d.dname FROM emp e ,dept d 
         WHERE e.sal>ALL(SELECT sal FROM emp WHERE deptno=30) AND e.deptno=d.deptno;

13.列出在每個部門工作的員工數量、平均工資和平均服務期限


確定所需要的資料表:
emp表:員工數量,平均工資,平均服務期限
dept表:部門資訊

確定已知的關聯欄位:
emp.deptno=dept.deptno

SELECT d.deptno dno,COUNT(e.empno) count,NVL(AVG(sal),0) sal,NVL(AVG(MONTHS_BETWEEN(SYSDATE,e.hiredate)),0)/12 years
FROM emp e ,dept d
WHERE e.deptno(+)=d.deptno
GROUP BY d.deptno;

14.列出所有員工的姓名、部門名稱和工資
確定所需要的資料表:
emp表:員工姓名、工資
dept表:部門名稱

確定已知的關聯欄位:
emp.deptno=dept.deptno
SELECT e.ename,e.sal,d.dname FROM emp e ,dept d WHERE e.deptno=d.deptno;

15.列出所有部門的詳細資訊和部門人數
確定所需要的資料表:
emp表:部門人數
dept表:部門的詳細資訊

確定已知的關聯欄位:
emp.deptno=dept.deptno
SELECT d.deptno,d.dname,d.loc ,COUNT(e.empno),NVL(AVG(e.sal),0)
FROM emp e ,dept d
WHERE e.deptno(+)=d.deptno
 GROUP BY d.deptno,d.dname,d.loc;