Oracle 显示员工的empno、ename,其中工作计数>;1.

Oracle 显示员工的empno、ename,其中工作计数>;1.,oracle,greatest-n-per-group,Oracle,Greatest N Per Group,在oracle 11g中的默认表emp中,我需要显示这些员工的姓名及其emp编号,其中作业大于1 如表中所示,有3名经理和2名销售员,应使用ename、emp打印。像总统这样的职位只有1个应该省略。子选区将只返回出现1次以上的职位 外部选择现在只返回此作业子集中的EMPNO EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7839 KING PRESIDENT - 11/17

在oracle 11g中的默认表emp中,我需要显示这些员工的姓名及其emp编号,其中作业大于1


如表中所示,有3名经理和2名销售员,应使用ename、emp打印。像总统这样的职位只有1个应该省略。

子选区将只返回出现1次以上的职位

外部选择现在只返回此作业子集中的EMPNO

EMPNO   ENAME   JOB         MGR     HIREDATE     SAL    COMM    DEPTNO
7839    KING    PRESIDENT     -     11/17/1981  5000    -        10
7698    BLAKE   MANAGER     7839    05/01/1981  2850    -        30
7782    CLARK   MANAGER     7839    06/09/1981  2450    -        10
7566    JONES   MANAGER     7839    04/02/1981  2975    -        20
7788    SCOTT   ANALYST     7566    12/09/1982  3000    -        20
7902    FORD    ANALYST     7566    12/03/1981  3000    -        20
7369    SMITH   CLERK       7902    12/17/1980  800     -        20
7499    ALLEN   SALESMAN    7698    02/20/1981  1600    300      30
7521    WARD    SALESMAN    7698    02/22/1981  1250    500      30

如下所示,您将需要一个子查询从emp中选择job,您可以在其中计算计数并检查其是否大于1。在子查询之前,您将从emp中选择要显示的EMPNO和ENAME

SELECT EMPNO,ENAME
  FROM emp
 WHERE JOB IN (SELECT JOB
                 FROM emp
             GROUP BY JOB 
               HAVING COUNT(*) > 1
              )

您可以通过以下方式尝试分组:

    SELECT EMPNO, ENAME
    FROM emp 
    WHERE JOB IN (SELECT JOB
    FROM emp
    GROUP BY JOB 
    HAVING COUNT(*) > 1)
选择empno、ename、count(作业) 来自emp 按职务分组 计数(工作)>1 计数(职务):具有相同职务的员工数
按职务分组:按职务分组结果,例如3名经理和2名销售员……

请始终只标记一个RDBMSSee:我没弄错吧:查询不应返回职员,但应返回分析师? SELECT empno,ename, count(job) FROM emp GROUP BY job HAVING count(job)>1