【发布时间】:2021-12-31 13:19:41
【问题描述】:
基本上,我试图找到计数结果的最大值。这是一个例子:
期望的输出:工作数量最多的员工的姓名和完成的工作数量。
我的表(粗体表示主键,*表示外键):
-
员工(Id、employee_name、....)
-
网站(Site_id、Site_name、....)
-
工作(Site_id*、Id*、DateJ)
这是我尝试过的两件事:
查询 #1:
Select
employee_name,
max(jobs_done) max_jobs
from
Employees E,
(select
id,
count(*) jobs_done from jobs
from jobs
group by id) t
where
E.id = t.Id
group by
employee_name;
这将返回每个员工的最大工作量,这是毫无意义的,因为子查询已经这样做了,这不是预期的结果。
查询 #2:
Select
employee_name,
t.job_done
from
Employees E
(Select
id,
count(*) job_done
from Jobs
group by id) t
where
E.id = t.id
order by
jobs_done desc
fetch first row only;
这有点适用于我的情况,但不适用于具有相同最大值的多个员工。
有没有一种简单的方法来解决这个问题,显然不改变数据库布局,最好只使用子查询(我还是个初学者)?
【问题讨论】:
-
也许您需要
with ties而不是only? -
@astentx 这确实有效。如果其他人想贡献更多,我会继续发帖。谢谢你!
-
同一个employee_name可以有不同的ID吗?
-
@SayanMalakshinov 是的,他们可以,因为 ID 是主键。
标签: sql database oracle sqlplus oracle19c