SQL 从不同表提取数据和统计

本人刚刚开始学SQL

表一 参加社团

 社团号     学号
 0001   201830740016
 0001   201830740023     
 0001   201830740047
 0001   .....
 0002   .....
 0002
 0002
 0002
 0003

 表2:社团
 编号    名称
 0001    舞蹈团
 0002    合唱团
 0003    篮球队
 0004    游泳队

要求:统计每个社团拥有的学生数量,显示社团编号 社团名称 以及学生人数

想直接用子查询统计,结果发现只能返回单个数据。
现在一头雾水不知道怎么解决
吧里的大佬看看怎么输入SQL吧
谢谢啦
(Access 2007-2016)

3个回答

方法一:
SELECT a.社团号, b.名称, COUNT(a.学号) 学生数量 FROM 参加社团 a, 社团 b
WHERE a.社团号 = b.编号
GROUP BY a.社团号

方法二:
SELECT b.编号, b.名称, COUNT(a.学号) 学生数量 FROM 参加社团 a RIGHT JOIN 社团 b
ON a.社团号 = b.编号
GROUP BY a.社团号

OnlyLove_longshao
OnlyLove_longshao 回复weixin_43778264: 没明白你的意思
一年多之前 回复
zjamal
浅诺回忆 回复weixin_43778264: group by a.社团号,b.名称
一年多之前 回复
weixin_43778264
查询中不包含作为聚合函数一部分的指定表达式"编号" 是怎么回事呢 。学生数量前面我加了 as
一年多之前 回复

这个很简单你说只返回单个数据是因为你没有对社团进行分组, group by assn_id

多表连接查询,然后进行分组统计
SELECT b.id as '社团编号',b.name '社团名称',count(card_id) as '学生人数' from table1 a LEFT JOIN table2 b ON a.id=b.id
GROUP BY b.id
这个是表一:参加社团
图片说明
这个是表二:社团
图片说明
这张图片是结果:
图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问