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中,在oracle 11g中,我需要显示那些具有emp no的员工的姓名,其中作业大于1。
如表中所示,有3名经理和2名推销员,应使用ename,emp打印。像总统这样只有1的工作应该省略。
答案 0 :(得分:0)
子选择将返回多次出现的JOB。
外部选择现在只返回JOB的这个子集中的EMPNO
SELECT EMPNO,ENAME
FROM emp
WHERE JOB IN (SELECT JOB
FROM emp
GROUP BY JOB
HAVING COUNT(*) > 1
)
答案 1 :(得分:0)
如下所示,您需要一个子查询来从emp中选择作业,您可以在其中计算计数并检查其是否大于1.在子查询之前,您将选择EMPNO和ENAME以显示来自emp。
SELECT EMPNO, ENAME
FROM emp
WHERE JOB IN (SELECT JOB
FROM emp
GROUP BY JOB
HAVING COUNT(*) > 1)
答案 2 :(得分:0)
您可以尝试GROUP BY:
SELECT empno,ename, count(job) FROM emp GROUP BY job HAVING count(job)>1
COUNT(JOB):具有相同工作的员工人数 GROUP BY Job:按工作分组结果,例如。 3名经理和2名推销员......