1不为空
2 OR AND???
(11)查询选修了课程的学生人数
3聚合函数使用
统计女生人数低于100人的学院
select S.Sdept FROM S
GROUP BY S.Ssex HAVING S.Ssex=‘女’ AND COUNT()>100;
是错误的
原因:选择列表中的列 ‘S.Sdept’ 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
分析:按学院分类
学院中女生,人数<100
所以用having,不用where
having,是聚合函数,按什么分类,决定这一类要或是不要的,按类淘汰;
where,是按元组淘汰的
select S.Sdept FROM S
WHERE S.Ssex=‘女’
GROUP BY S.Sdept
HAVING COUNT()>0;
例2
显示两门课(包括)以上不及格的学生学号
select Sno from sc
WHERE SCORE<60
group by Sno
HAVING COUNT(*)>2