Учитывая следующую таблицу, где обе строки составляют ключ:
WORKS_ON: ID, ProjectNum
Можно ли вывести для каждого идентификатора количество других работников (каждый идентификатор соответствует работнику), которые также работают над одними и теми же проектами?
Например, если у нас есть ID 1, работающий над проектами 2 и 3, 2, работающий над 2 и 3, работающий над 2 и 3. Я хочу вывести 1 с 1 в качестве счетчика, 2 с 0 в качестве счетчика и 3 с 1 в качестве счетчика. .
Я не уверен, возможно ли это вообще, я придумал наивный способ, при котором я выбираю количество строк для каждого идентификатора, а затем упорядочиваю их по 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;
Отметьте свой вопрос с помощью базы данных, которую вы используете.