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

SQL查询无主键Student表,筛选全科目均超50%学生的报错解决

问题原因

  • 第一段报错SQL的错误:GROUP BY 语法要求SELECT返回的字段必须是分组维度,或者被聚合函数包裹,SELECT * 不符合该语法要求,且逻辑上也没有实现「所有科目均达标才保留」的判断。
  • 第二段调整后的SQL问题:仅过滤了单条低于50%的成绩记录,会保留存在不及格科目、但同时有及格科目的学生的及格记录,不符合需求。

实现思路

先按学号(Roll_Number)分组,筛选出**所有科目最低成绩百分比都≥50%**的学号列表,再用该列表匹配原表,返回对应学生的全部记录即可。

可用SQL代码

如果Percent字段为数值类型(40%存为0.4、60%存为0.6),使用以下写法:

-- 子查询写法
SELECT * INTO #temp1 
FROM Student 
WHERE Roll_Number IN (
    SELECT Roll_Number 
    FROM Student
    GROUP BY Roll_Number
    HAVING MIN(Percent) >= 0.5
)
-- CTE写法,逻辑更清晰
WITH QualifiedStudents AS (
    SELECT Roll_Number
    FROM Student
    GROUP BY Roll_Number
    HAVING MIN(Percent) >= 0.5
)
SELECT s.* INTO #temp1
FROM Student s
JOIN QualifiedStudents q ON s.Roll_Number = q.Roll_Number

如果Percent字段是带%后缀的字符串类型,需要先做类型转换再比较,把MIN(Percent) >= 0.5替换为MIN(CAST(REPLACE(Percent, '%', '') AS DECIMAL)) >= 50即可。

结果验证

基于你提供的测试数据,仅学号为1231的Ishan没有低于50%的科目,最终会返回该学生的全部成绩记录,你给出的示例输出中学号写为1234属于笔误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:09:03