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

统计成绩高于平均分的人数SQL执行结果异常问题排查

问题原因分析
  • 核心错误出在子查询的GROUP BY grade逻辑上:子查询按成绩分组后,AVG(grade)计算的是每个分组内的成绩平均值,而非全表的整体平均成绩。
  • 由于你是按grade字段分组,同一个分组内所有学生的成绩完全一致,因此每个分组的AVG(grade)结果就等于该分组的grade值本身:
    • 使用grade >= AVG(grade)作为条件时,所有分组都满足要求,子查询返回全部存在的成绩值,外层查询匹配到所有学生,最终返回全体学生总数。
    • 改成grade > AVG(grade)后,没有任何分组能满足“成绩大于自身平均值”的条件,子查询返回空,外层查询匹配不到任何学生,因此结果为0。
  • 你用固定整数代替AVG(grade)时,避开了分组后的平均值计算逻辑错误,因此结果符合预期。
正确实现代码

要统计成绩高于全表平均分的学生人数,直接用标量子查询计算全表平均分即可,不需要分组:

SELECT count(*) 
FROM data.students
WHERE grade > (SELECT AVG(grade) FROM data.students);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:36:06