我有一个Group
表格,其中包含GroupId
和GroupName
列。还有另一个名为Group_Student
的表,用于跟踪学生所属的组。它包含列GroupId
(Group
表的外键)和StudentId
。
我想知道我如何编写一个SQL查询,其中列出了GroupName
,GroupId
以及每组中的学生人数。
示例,如果Group_Student
表包含以下条目
GroupId StudentId
-------------------
1 2
1 3
2 4
然后SQL查询应该产生以下输出
GroupName MemberCount
------------------------
ABC 1
DEF 2
请告诉我如何为此编写SQL。我正在使用SQL Server 2005.提前感谢。
答案 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
子句确保计数值按GroupName
和GroupId
分组
SELECT GroupName, a.GroupId, count(StudentId) "MemberCount"
FROM Group a
JOIN Group_student b on a.GroupId= b.GroupId
GROUP BY GroupName, a.GroupId