update employee as a
set a.sup_role=(
select b.job_role from employee as b
where b.supervisorid=a.employeeid
group by b.job_role
order by count(b.job_role) desc
limit 1
)
where a.job_role='MAN1';
好的,我有一张我们所有员工的表 - 大约100K。
我们所有的用户都有基于employee.job_title构建的工作角色。因此,基于4K + job_titles,我将其降低到大约40个job_roles。这样我们就可以根据employee.job_roles在CMS中分配内容。这一直很好,但问题在于管理者。经理得到一些通用的公司job_title,我们将其作为一个通用的job_role。
您在上面看到的是我用来做我需要做的事情的代码 - 根据他们的大多数员工所做的事情找出什么职位是主管?#34;。这会输出正确的sup_role但我的代码有几个问题:
所以我有下表 -
雇员
适用的字段
雇员
supervisorid
JOB_TITLE
job_role
sup_role
以下是我的最后一次尝试。它只是运行,从不输出任何东西。我想知道我是否需要创建一个帮助表来抓住DISTINCT supervisorid,因为一个员工可能是很多人的主管。
update employee as a
set a.sup_role=(
select b.job_role from employee as b
where b.supervisorid=a.employeeid
group by b.job_role
order by count(b.job_role) desc
limit 1
)
WHERE a.uid IN (select DISTINCT employee.supervisorid
from employee
where employee.supervisorid is not null
);