Oracle 经典语法(五)

1. 哪些部门的人数比20 号部门的人数多。
SELECT DEPTNO,COUNT(*) FROM EMP
    GROUP BY DEPTNO
      HAVING COUNT(*) >
            (SELECT COUNT(*) FROM EMP
             WHERE DEPTNO = 20
            );
           
2. SMITH的领导是谁(非关联子查询)。
SELECT ENAME
      FROM EMP
     WHERE EMPNO =
            (SELECT MGR FROM EMP
            WHERE ENAME='SMITH'
           );

3.FORD 领导谁(非关联子查询)。
SELECT  ENAME
     FROM EMP
      WHERE MGR IN
           (SELECT EMPNO FROM EMP
             WHERE ENAME='FORD'  
                 );

4. SMITH 的领导是谁(关联子查询)。
SELECT ENAME
      FROM EMP E1
      WHERE EXISTS (
            SELECT 1 FROM EMP   E2
            WHERE ENAME='SMITH'
            AND E2.MGR = E1.EMPNO);

5. FORD 领导谁(关联子查询)。
SELECT ENAME
      FROM EMP  E1
     WHERE EXISTS (
           SELECT 1 FROM EMP E2
           WHERE ENAME='FORD'
            AND E2.EMPNO = E1.MGR);


6. 列出在同一部门共事,入职日期晚但工资高于其他同事的员工:名字、工资、入职日期
(关联子查询)。
 SELECT ename 姓名,
             SAL  AS 工资,HIREDATE AS 入职日期
     FROM EMP E1
     WHERE EXISTS (
            SELECT 1 FROM EMP E2
           WHERE E2.DEPTNO = E1.DEPTNO
           AND   E1.HIREDATE > E2.HIREDATE
            AND   E1.SAL    > E2.SAL
           );


7. 哪些员工跟SMITH不在同一个部门(非关联子查询)。
SELECT ENAME
     FROM EMP
           WHERE DEPTNO <>
           (SELECT DEPTNO FROM EMP
            WHERE ENAME='SMITH'
           );


8. 哪些员工跟SMITH不在同一个部门(关联子查询)。
SELECT ENAME
      FROM EMP  E1
      WHERE NOT EXISTS (
            SELECT 1 FROM EMP  E2
           WHERE E1.DEPTNO = E2.DEPTNO
            AND E2.ENAME='SMITH'
           );

9.  RESEARCH部门有哪些职位(非关联子查询)。
 SELECT DISTINCT JOB  FROM EMP
      WHERE DEPTNO = (
           SELECT DEPTNO FROM DEPT
            WHERE DNAME = ' RESEARCH');  

10.  RESEARCH部门有哪些职位(关联子查询)。
SELECT DISTINCT JOB  FROM EMP
     WHERE EXISTS(
           SELECT 1 FROM DEPT
            WHERE EMP.DEPTNO = DEPT.DEPTNO
           AND DEPT.DNAME = ' RESEARCH');

原文地址:https://www.cnblogs.com/lu-lin/p/3757481.html