我有两张桌子。
- 数据为 rollno、batchids 的学生表。
- 带有 batchid、courseid 的批次表。
学生表的批处理标识列包含学生可能注册的各种课程的逗号分隔批处理标识。现在我想按课程计算学生的数量。有人能帮我吗?
到目前为止,我已经达到
select *
from students
where batchids in (select id from batches where courseid=1)
这给了我一个 ID 为“1”的学生名单。
如果我正确理解了您的数据,您会得到以下信息:
学生:(s1,'1,2,3')
批处理ID:('1,2,3',1),('1,2,3',2),'1,2,3',3)
假设这是正确的,逗号分隔的列表只是进入 batchids 表的一个键。因此,要获得每门课程的计数,请加入:
select courseid, count(*)
from batches b join
students s
on b.studentid = s.studentid
group by courseid
使用计数()。
Select count(*)
from students
where batchids in (select id from batches where courseid=1)