如何按学期与CGPA分数区间统计各分段学生人数
按学期和分数区间统计人数实现方案
默认你的SCORE字段为10分制,区间规则为左闭右开(如10-9区间对应分数≥9且<10,以此类推),你可以根据实际规则调整边界判断逻辑。
另外注意你提供的表名SEMETSER、字段SEMISTER_NO大概率是拼写误差,实际场景可以修正为SEMESTER和SEMESTER_NO,以下SQL沿用你给出的原始命名。
SELECT s.SEMISTER_NO, s.NAME AS semester_name, COUNT(CASE WHEN ss.SCORE >=9 AND ss.SCORE <10 THEN 1 END) AS `10-9分人数`, COUNT(CASE WHEN ss.SCORE >=8 AND ss.SCORE <9 THEN 1 END) AS `9-8分人数`, COUNT(CASE WHEN ss.SCORE >=7 AND ss.SCORE <8 THEN 1 END) AS `8-7分人数`, COUNT(CASE WHEN ss.SCORE >=6 AND ss.SCORE <7 THEN 1 END) AS `7-6分人数`, COUNT(CASE WHEN ss.SCORE >=5 AND ss.SCORE <6 THEN 1 END) AS `6-5分人数`, COUNT(CASE WHEN ss.SCORE >=4 AND ss.SCORE <5 THEN 1 END) AS `5-4分人数` FROM SEMETSER s LEFT JOIN STUDENT_SEMETSER ss ON s.SEMISTER_NO = ss.SEMESTER_NO GROUP BY s.SEMISTER_NO, s.NAME ORDER BY s.SEMISTER_NO;
逻辑说明
- 用LEFT JOIN关联学期表和学生成绩表,确保没有学生成绩的学期也会在结果中展示,对应区间人数为0
- 用CASE WHEN匹配分数区间,符合条件返回1,不符合返回NULL,COUNT函数会自动忽略NULL值实现计数
- 按学期编号、学期名称分组,输出每个学期的各区间人数统计
如果你的分数是百分制,只需要把CASE WHEN的判断边界乘以10即可,比如10-9分对应≥90且<100。
内容的提问来源于stack exchange,提问作者GoAshraya Save Cows
相关产品推荐
相关产品推荐

