用于获取每个组中的成员数的SQL

时间:2014-09-01 03:12:57

标签: sql sql-server tsql

我有一个Group表格,其中包含GroupIdGroupName列。还有另一个名为Group_Student的表,用于跟踪学生所属的组。它包含列GroupIdGroup表的外键)和StudentId

我想知道我如何编写一个SQL查询,其中列出了GroupNameGroupId以及每组中的学生人数。

示例,如果Group_Student表包含以下条目

GroupId   StudentId  
-------------------
  1          2 
  1          3 
  2          4 

然后SQL查询应该产生以下输出

GroupName    MemberCount
------------------------
   ABC           1   
   DEF           2      

请告诉我如何为此编写SQL。我正在使用SQL Server 2005.提前感谢。

3 个答案:

答案 0 :(得分:1)

这是这个工作的小提琴

http://sqlfiddle.com/#!3/0f8a5/2/0

select 
   groupname, [group].groupid, count(*) as 'MemberCount'
from [group]
inner join group_student on [group].groupid = group_student.groupid
group by groupname, [group].groupid

答案 1 :(得分:1)

SELECT GroupName, Group.GroupID, COUNT(StudentId) AS MemberCount 
FROM Group 
INNER JOIN Group_Student ON Group.GroupID = Group_Student.GroupID 
GROUP BY Group.GroupID

答案 2 :(得分:0)

尝试以下查询:

它将连接两个表,然后为其添加计数。 GROUP BY子句确保计数值按GroupNameGroupId分组

SELECT GroupName, a.GroupId, count(StudentId) "MemberCount"
FROM Group a
JOIN Group_student b on a.GroupId= b.GroupId
GROUP BY GroupName, a.GroupId