获得给定工作的最少雇员
Get the minimum employees with a given job
我有这个table:
Name Null? Type
-------------------------- -------- ------------
EMPLOYEENO NOT NULL NUMBER(4)
ENAME VARCHAR2(15)
JOB VARCHAR2(15)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER
COMM NUMBER
DEPTNO NUMBER(2).
我想获得从事给定工作的员工人数最少的部门(例如,从事 'Analyst' 工作的所有员工)。
能帮我查询一下吗?
这里的关键是获取每个部门中从事特定工作的员工的数量。在下面的查询中,这是通过子查询实现的。然后,我们希望获得最小编号的部门。做这项工作的员工的数量,所以我们对子查询返回的记录进行升序排序,然后 select 使用 rownum = 1
第一个结果
SELECT DEPTNO from (
SELECT COUNT(*) AS NO_OF_EMP , DEPTNO
FROM EMPLOYEE EMP
WHERE EMP.JOBNAME = 'Analyst'
GROUP BY DEPTNO
ORDER BY NO_OF_EMP ASC )
where ROWNUM = 1;
考虑到此类员工的最小数量可能是 0
,您需要对如何执行此操作有点聪明:
select d.*
from (select deptno,
sum(case when jobname = 'Analyst' then 1 else 0 end) as numAnalysts
from employees
group by deptno
order by numAnalysts asc
) d
where rownum = 1;
我有这个table:
Name Null? Type
-------------------------- -------- ------------
EMPLOYEENO NOT NULL NUMBER(4)
ENAME VARCHAR2(15)
JOB VARCHAR2(15)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER
COMM NUMBER
DEPTNO NUMBER(2).
我想获得从事给定工作的员工人数最少的部门(例如,从事 'Analyst' 工作的所有员工)。
能帮我查询一下吗?
这里的关键是获取每个部门中从事特定工作的员工的数量。在下面的查询中,这是通过子查询实现的。然后,我们希望获得最小编号的部门。做这项工作的员工的数量,所以我们对子查询返回的记录进行升序排序,然后 select 使用 rownum = 1
第一个结果SELECT DEPTNO from (
SELECT COUNT(*) AS NO_OF_EMP , DEPTNO
FROM EMPLOYEE EMP
WHERE EMP.JOBNAME = 'Analyst'
GROUP BY DEPTNO
ORDER BY NO_OF_EMP ASC )
where ROWNUM = 1;
考虑到此类员工的最小数量可能是 0
,您需要对如何执行此操作有点聪明:
select d.*
from (select deptno,
sum(case when jobname = 'Analyst' then 1 else 0 end) as numAnalysts
from employees
group by deptno
order by numAnalysts asc
) d
where rownum = 1;