Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql sql统计两个值共享第三个值的次数_Mysql - Fatal编程技术网

Mysql sql统计两个值共享第三个值的次数

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上连接。但是,一个表有人名,另一个表有公司名


如何生成一个查询结果,从而计算每个人与每个公司共享相同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上创建索引,查询的执行速度应该会更快