-1

我有一个表 Mbr,其中包含 3 个字段、GroupTypeLeaderIDMemberID。基本上,组织中的所有成员都分为这些组,由其领导者的唯一 ID ( LeaderID) 标识。每个成员的记录也有自己的MemberID,领导者自己也有独特MemberID的。GroupType仅指定成员所在的组是否被视为、LargeSmallIndividual

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

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

是否可以进行查询以获取MemberID每个唯一的 Count group,然后获取有COUNT多少LeaderID具有一定数量的成员关联的成员?

4

2 回答 2

0

我相信您可以编写一些带有多个子查询的复杂查询来创建一个查询来为您提供所需的内容,但我个人更喜欢更直接的方法。在这种情况下,它将使用一些临时表来存储中间值。我将首先按几列(您将用作标准)分组,其中 count 是查询的值。然后我会将这些存储到临时表中,最后创建一个查询以利用临时表为您提供您正在寻找的结果。

于 2013-08-01T16:58:48.507 回答
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

问题2:

SELECT UniqueMemberIDPerGroup, COUNT(LeaderID) AS NumberOfLeaderID 
FROM ( 
    SELECT LeaderID, COUNT(DISTINCT MemberID) AS UniqueMemberIDPerGroup
    FROM MyTable
    GROUP BY LeaderID
) AS InnerGrouping
GROUP BY UniqueMemberIDPerGroup
于 2013-08-01T17:11:48.910 回答