获得给定工作的最少员工
Posted
技术标签:
【中文标题】获得给定工作的最少员工【英文标题】:Get the minimum employees with a given job 【发布时间】:2015-03-28 11:52:26 【问题描述】:我有这张桌子:
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).
我希望获得具有给定工作的最少员工的部门(例如所有从事“分析师”工作的员工)。
你能帮我查询一下吗?
【问题讨论】:
Count + Group by + Order by + ROWNUM
我应该试一试。
寻找所有这些概念来达到结果
【参考方案1】:
这里的关键是获取每个部门中从事特定工作的员工人数。在下面的查询中,这是通过子查询来实现的。然后,我们希望得到最少没有的部门。从事这项工作的员工,所以我们按升序排列子查询返回的记录,然后使用 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;
【讨论】:
@TusharShimpi 。 . .这不会返回一个分析师为零的部门,这将是我理解的最低问题。【参考方案2】:鉴于此类员工的最小数量可能是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;
【讨论】:
顺序应该是升序以获得员工人数最少的部门 @codiacTushki 。 . .谢谢。以上是关于获得给定工作的最少员工的主要内容,如果未能解决你的问题,请参考以下文章
2022-10-07:给定员工的 schedule 列表,表示每个员工的工作时间。 每个员工都有一个非重叠的时间段 Intervals 列表,这些时间段已经排好序。 返回表示 所有 员工的 共同,正
即使 sql developer 中不存在数据,也返回给定员工的行
sql 这将获得员工的姓名,身份,时间(生产和非生产),日期工作以及所提供单位的任何理由。