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

如何通过SQL Group By按自定义逻辑聚合列计算学生综合成绩?

自定义逻辑聚合学生成绩的SQL实现

需求说明

仅当学生所有科目Result均为PASS时,综合成绩标记为PASS;只要有任意一科Result为非PASS(包括FAILED、GRACE、SUPPLYMENT等),综合成绩标记为FAILED。

解决方案

假设原始成绩表名为student_scores,通过GROUP BY分组结合条件判断即可实现需求,以下是两种简洁可行的写法:

写法一:统计非PASS科目数量

SELECT 
    Student_id,
    CASE 
        WHEN COUNT(CASE WHEN Result != 'PASS' THEN 1 END) = 0 THEN 'PASS'
        ELSE 'FAILED(学生任一科目不及格则综合成绩为不及格)'
    END AS overall_result
FROM student_scores
GROUP BY Student_id;

逻辑解析:

  • COUNT(CASE WHEN Result != 'PASS' THEN 1 END)会统计当前学生所有非PASS科目的数量
  • 若统计结果为0,说明所有科目都是PASS,返回PASS;否则返回带备注的FAILED

写法二:用标识值判断全PASS状态

SELECT 
    Student_id,
    CASE 
        WHEN MIN(CASE WHEN Result = 'PASS' THEN 1 ELSE 0 END) = 1 THEN 'PASS'
        ELSE 'FAILED(学生任一科目不及格则综合成绩为不及格)'
    END AS overall_result
FROM student_scores
GROUP BY Student_id;

逻辑解析:

  • 内层CASE将PASS转为1,其他结果转为0
  • MIN()函数取该学生所有科目的标识值最小值,若最小值为1,说明所有科目都是1(即全PASS);否则存在非PASS科目

测试结果验证

针对你提供的测试数据,两种写法都会输出符合预期的结果:

Student_idoverall_result
123FAILED(学生任一科目不及格则综合成绩为不及格)
456PASS

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:45:47