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

如何编写SQL语句查询所有学生的及格(全科目≥35分)或不及格(任一科目<35分)状态

学生及格状态查询解决方案

这个问题的核心是要基于学生所有科目的成绩整体判断及格状态,而不是单条成绩记录的判断。你原来的SQL没有做分组处理,会返回每个学生的每一条成绩记录,而且逻辑只针对单条分数,不符合需求。我们可以通过分组计算每个学生的最低分来实现判断:

实现思路

因为及格规则是所有科目成绩≥35分,反过来理解就是:只要有任意一门科目分数<35,就判定为不及格。所以我们可以先按学生分组,找到每个学生的最低分——如果最低分≥35,说明所有科目都及格;反之则存在不及格科目。

最终SQL语句

SELECT 
    s.Student_Id AS student_id,
    s.Student_name AS student_name,
    CASE 
        WHEN MIN(m.marks) >= 35 THEN 'Pass'
        ELSE 'Fail'
    END AS status
FROM Student s
INNER JOIN Marks m ON s.Student_Id = m.student_id
GROUP BY s.Student_Id, s.Student_name;

结果验证

执行这条SQL后,会得到你期望的输出:

student_idstudent_namestatus
1AAAAFail
2BBBBPass
  • 学生1的最低分是34(小于35),所以判定为Fail
  • 学生2的最低分是42(≥35),所以判定为Pass

补充说明

如果你使用的是支持IF函数的数据库(比如MySQL),也可以把CASE WHEN替换成IF写法,效果完全一致:

SELECT 
    s.Student_Id AS student_id,
    s.Student_name AS student_name,
    IF(MIN(m.marks) >= 35, 'Pass', 'Fail') AS status
FROM Student s
INNER JOIN Marks m ON s.Student_Id = m.student_id
GROUP BY s.Student_Id, s.Student_name;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 14:52:43