MariaDB按dept_name分组统计学分总和并筛选低于30的查询方法
问题原因
SQL 语句的执行逻辑中,WHERE 子句会在 GROUP BY 分组操作之前执行,仅能对原始表的单行数据做过滤,无法作用于分组后生成的聚合计算结果(如总学分、计数等),因此你直接在 WHERE 后加总学分判断条件会触发语法错误。
解决方案
需要使用专门用于筛选聚合结果的 HAVING 子句,它的执行顺序在 GROUP BY 之后,可对分组后的聚合计算结果做过滤。
假设你的表名为 course,正确的查询语句如下:
SELECT dept_name, SUM(credits) AS total_credits FROM course GROUP BY dept_name HAVING SUM(credits) < 30;
部分数据库(如 MySQL)支持在
HAVING子句中直接使用聚合结果的别名,可简化为HAVING total_credits < 30,写法更易读。
内容的提问来源于stack exchange,提问作者Nicholas Chaudoir
相关产品推荐
相关产品推荐

