SQL Count和Group By问题

时间:2013-08-01 16:42:50

标签: mysql sql count group-by

我有一个表格Mbr,其中包含3个字段GroupTypeLeaderIDMemberID。基本上,组织中的所有成员都被划分为这些组,由领导者的唯一ID LeaderID)标识。每个成员记录也有自己的MemberID,领导者自己也有一个独特的MemberIDGroupType仅指定该成员所在的群组是LargeSmall还是Individual群组。

我需要找出每个GroupType包含一定数量成员的组数 例如:

  • 多少个大型组包含6个成员,7个成员,8个成员,9个等等。
  • 有多少小组包含2名成员,3名成员,4名成员和5名成员
  • 有多少个人团体。

是否可以进行查询以获取每个MemberID的唯一group的计数,然后获得COUNT的{​​{1}}个LeaderID有一定数量的成员与他们相关联吗?

2 个答案:

答案 0 :(得分:0)

我确定你可以用几个子查询编写一些复杂的查询来创建一个查询来给你你想要的东西,但我个人喜欢更简单的方法。在这种情况下,它将使用一些临时表来存储中间值。我将首先按几列(您将用作标准)进行分组,其中count是查询的值。然后我将这些存储到临时表中,最后创建一个查询,以利用临时表为您提供所需的结果。

答案 1 :(得分:0)

注意:由于您没有指定正在使用的DBMS,我尝试进行基本查询。在SQLServerOracle中,这可以更加优雅。

如果这是正确的话,我假设给定的Member只能Leader Group只有一个SELECT GroupType, NumberOfMembers, COUNT(LeaderID) AS NumberOfGroups FROM ( SELECT GroupType, LeaderID, COUNT(*) AS NumberOfMembers FROM MyTable GROUP BY GroupType, LeaderID ) AS InnerGrouping GROUP BY GroupType, NumberOfMembers ORDER BY GroupType, NumberOfMembers

问题#1:

SELECT UniqueMemberIDPerGroup, COUNT(LeaderID) AS NumberOfLeaderID 
FROM ( 
    SELECT LeaderID, COUNT(DISTINCT MemberID) AS UniqueMemberIDPerGroup
    FROM MyTable
    GROUP BY LeaderID
) AS InnerGrouping
GROUP BY UniqueMemberIDPerGroup

问题#2:

{{1}}