Mysql sql统计两个值共享第三个值的次数
我有两个表,可以在一个公共id上连接。但是,一个表有人名,另一个表有公司名Mysql sql统计两个值共享第三个值的次数,mysql,Mysql,我有两个表,可以在一个公共id上连接。但是,一个表有人名,另一个表有公司名 如何生成一个查询结果,从而计算每个人与每个公司共享相同id的次数?您的表数据看起来很奇怪。但事情是这样的 SELECT p.person,COUNT(*) as share_count FROM people p INNER JOIN company c ON c.id = p.id GROUP BY p.person 结果 person share_count dave 3 mark 4 sara
如何生成一个查询结果,从而计算每个人与每个公司共享相同id的次数?您的表数据看起来很奇怪。但事情是这样的
SELECT p.person,COUNT(*) as share_count
FROM people p
INNER JOIN company c
ON c.id = p.id
GROUP BY p.person
结果
person share_count
dave 3
mark 4
sara 3
id person share_count
1 dave 1
1 sara 1
2 mark 2
2 sara 2
3 dave 2
3 mark 2
或者如果你想按p.id和p.person分组
SELECT p.id,p.person,COUNT(*) as share_count
FROM people p
INNER JOIN company c
ON c.id = p.id
GROUP BY p.id,p.person
结果
person share_count
dave 3
mark 4
sara 3
id person share_count
1 dave 1
1 sara 1
2 mark 2
2 sara 2
3 dave 2
3 mark 2
更新将共享计数除以(不同人员的计数)
阅读MySQL连接并制作更好的表。你的公司里只有一个莎拉吗?如果一个Sarah属于两个公司,而另一个Sarah属于一个公司怎么办?在本例中,只有一个Sarah存在。我只是不知道如何运行返回计数一个人和一家公司共享同一id的次数。您想要的输出是什么?非常感谢。这真的很有帮助。唯一的问题是,实际的表分别有5M和3M条记录,因此查询需要一段时间。您可以推荐如何添加最后一列的任何快照,显示共享计数占“个人计数”的百分比。我尝试了
sum((选择
share\u count)/count(p.person)作为百分比
检查我的答案底部是否除以不同的人数。此外,如果您在ID上创建索引,查询的执行速度应该会更快