Closed. This question needs to be more focused。它目前不接受答案。
想改进这个问题吗?更新问题,使其只关注一个问题editing this post
去年关门了。
我正在使用MySQL。我基本上只需要两个数字:属于任意数量组的成员数和没有组的成员数。目前,我使用两个查询来对不存在的数字进行第一次计数,然后对那些拥有的数字进行计数。但我希望有更好的办法。
 members: id, name,gender
 groups: id,name
 member_groups:id,groupid,memberid

目前我正在做:
 in_group=SELECT COUNT(id) FROM members WHERE id in (SELECT memberid FROM member_groups)

 not_in_group=SELECT COUNT(id) FROM members WHERE id not in (SELECT memberid FROM member_groups)

最佳答案

我将使用直方图方法:

select num_groups, count(*) as num_members_with_this_many_groups
from (select m.id, count(mg.id) as num_groups
      from members left join
           members_groups mg
           on mg.id = m.memberid
      group by m.id
     ) m
group by num_groups;

对于0个或0个以上的组,可以很容易地修改逻辑,但我通常认为列出所有数字更有用。

关于mysql - 查询以返回属于一个组的成员和不属于一个语句的成员的数量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48449505/

10-10 00:09