You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中GROUP BY使用问题:如何统计学员学分及课程情况

解决SQL Server中GROUP BY的学员统计需求

嘿,我来帮你搞定这个学员信息的统计查询!根据你给出的表结构和期望结果,咱们可以结合GROUP BY和条件聚合函数来完成。

需求拆解

先理清楚每个统计字段的逻辑:

  • Total_Credits:只累加该学员所有通过课程(Passed='YES')的学分,未通过的课程学分不计入
  • Courses:该学员修读的课程总数(无论是否通过)
  • Passed:该学员通过的课程数量
  • Not_Passed:该学员未通过的课程数量

实现Query

SELECT 
    Name AS Alumn,
    SUM(CASE WHEN Passed = 'YES' THEN Credits ELSE 0 END) AS Total_Credits,
    COUNT(Course) AS Courses,
    SUM(CASE WHEN Passed = 'YES' THEN 1 ELSE 0 END) AS Passed,
    SUM(CASE WHEN Passed = 'NO' THEN 1 ELSE 0 END) AS Not_Passed
FROM 
    学员表
GROUP BY 
    Alumn_ID, Name
ORDER BY 
    Name;

代码解释

  1. GROUP BY Alumn_ID, Name:因为Alumn_ID是学员的唯一标识(避免重名学员统计错误),同时我们需要显示学员姓名,所以把这两个字段放在GROUP BY里。
  2. Total_Credits的计算:用CASE判断课程是否通过,通过的话取对应的Credits值,否则取0,再用SUM累加得到总学分。
  3. Courses的计算:直接用COUNT(Course)统计每个学员的课程记录数,就是修读的课程总数。
  4. Passed和Not_Passed的计算:同样用CASE做条件判断,符合条件的返回1,否则返回0,再用SUM统计数量,就得到了通过/未通过的课程数。

执行这条Query后,就能得到你期望的统计结果啦!

内容的提问来源于stack exchange,提问作者Dog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:27:43