给定下表,其中两行构成键:
WORKS_ON: ID, ProjectNum
是否可以为每个 ID 输出也在完全相同的项目上工作的其他 worker 的数量(每个 ID 对应一个 worker )?
例如,如果我们有 ID 1 在处理项目 2 和 3,2 在处理 2,3 在处理 2 和 3。我想输出 1,其中 1 作为计数,2 和 0 作为计数,3 和 1作为计数。
我不确定这是否可能,我确实想到了一种天真的方法,即我为每个 ID 选择行数,然后在逐一比较所有 ProjectNumber 之前按 ProjectNumber 排序。但我不确定如何计算满足此要求的员工数量或如何以可接受的方式制定它。
感谢任何指导。
最佳答案
您可以使用 SQL 中的集合机制来相当复杂地表达这一点。或者,您可以更简单地使用字符串聚合来完成。所以,在 MySQL 中,这看起来像:
select i.id, count(i2.id) as cnt
from (select id, group_concat(projectnum order projectnum) as projects
from works_on
group by id
) i left join
(select id, group_concat(projectnum order projectnum) as projects
from works_on
group by id
) i2
on i2.projects = i.projects and i2.id <> i.id
group by i.id
order by i.id;
关于mysql - 如何找到从事完全相同项目的 worker 数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49949397/