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

不使用子查询如何通过CASE语句统计符合成绩条件的学生数量

现有查询问题说明

  1. A等级数量判断逻辑错误:你写的sum(...) > 2要求学生至少获得3个A,不符合需求中「2个A」的要求,需要调整为>=2
  2. 仅返回符合条件的学生名/NULL值,没有做最终的计数聚合

符合要求的改写方案(无任何子查询)

SELECT COUNT(DISTINCT CASE
    WHEN SUM(CASE WHEN grade = 5 THEN 1 ELSE 0 END) >= 2
     AND SUM(CASE WHEN grade = 2 THEN 1 ELSE 0 END) >= 1
    THEN student
    ELSE NULL
END) AS qualified_student_total
FROM grades
GROUP BY student

如果使用的SQL方言支持布尔表达式直接求和(比如MySQL),可以简化为更短的写法:

SELECT COUNT(DISTINCT CASE
    WHEN SUM(grade = 5) >= 2 AND SUM(grade = 2) >= 1
    THEN student
    ELSE NULL
END) AS qualified_student_total
FROM grades
GROUP BY student

实现逻辑说明

  • 先按学生维度分组,统计每个学生的A等级(grade=5)、D等级(grade=2)的获得次数
  • 用CASE语句对满足「2个及以上A、至少1个D」的学生返回学生名,不满足的返回NULL
  • 利用COUNT函数自动忽略NULL值的特性,配合DISTINCT去重,直接统计得到符合条件的学生总人数,完全符合禁止子查询的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 02:00:02