数据库原理这门课实验过程遇到的问题

常见的SQL执行顺序是:FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY。WHERE子句在分组前过滤行,而HAVING在分组后过滤组。
在SELECT子句中使用聚合函数时,通常需要GROUP BY来指定分组的列。例如,按学号分组后,统计每个学号的选课数量,这样HAVING子句才能正确过滤出符合条件的组。
关键总结
聚合条件用 HAVING:所有涉及 COUNT、SUM、AVG 等聚合函数的条件必须放在 HAVING 中。

分组必用 GROUP BY:如果查询中包含聚合函数且需要分组统计,必须显式使用 GROUP BY

–19.求选修课程超过3门的学生学号
SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT (Cno) > 3;


如果查询需要同时包含 WHERE 和 HAVING,例如“选修超过3门且成绩均大于80分的学生学号”:
SELECT Sno
FROM SC
WHERE Grade > 80 — 先过滤单条记录
GROUP BY Sno
HAVING COUNT(Cno) > 3; — 再过滤分组结果

这是测试文本,单击 “编辑” 按钮更改此文本。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部