oracle多表查詢和子查詢練習


--1.列出至少有三個員工的所有部門和部門信息。
SELECT D.DEPTNO, D.DNAME, D.LOC, T.COUNTS
   FROM DEPT D, (SELECT DEPTNO, COUNT(*) COUNTS FROM EMP GROUP BY DEPTNO) T
  WHERE D.DEPTNO = T.DEPTNO
    AND T.COUNTS >= 3;
 
--2.列出受雇日期早於直接上級的所有員工的編號,姓名,部門名稱
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;

  
--3.列出職位為“CLERK”的員工姓名和其所在部門名稱,部門人數:
SELECT e.ename,d.dname,t.counts
FROM emp e, dept d,
      (SELECT deptno de, COUNT(*) counts FROM emp GROUP BY deptno )t
WHERE e.deptno = d.deptno AND e.deptno = t.de AND e.job = 'CLERK';

--4.列出和“SCOTT”從事相同工作的所有員工及部門名稱:
SELECT E.*, D.DNAME
   FROM EMP E, DEPT D
  WHERE E.DEPTNO = D.DEPTNO
    AND E.JOB = (SELECT JOB FROM EMP WHERE ENAME = 'SCOTT');

--5.列出每個部門工作的員工數量、平均工資和平均服務期限(單位為年)
SELECT DEPTNO "部門編號",
        COUNT(EMPNO) "人數",
        ROUND(AVG(SAL)) "平均薪資",
        ROUND(AVG(MONTHS_BETWEEN(SYSDATE, HIREDATE))/12) "服務年限"
   FROM EMP
  GROUP BY DEPTNO;

--6、列出各個部門的MANAGER 的最低薪金:
SELECT deptno, MIN(sal) FROM emp WHERE job = 'MANAGER' GROUP BY deptno;

--7、給任職日期超過10年的人加薪10%;
SELECT E.*, E.SAL * 1.1
   FROM EMP E
  WHERE (MONTHS_BETWEEN(SYSDATE, HIREDATE)) / 12 > 10;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM