该题基于“学生-选课-课程”数据库中的3个关系。 学生基本信息S(S#,SNAME, SEX, AGE) 选课信息SC(S#, C#, GRADE) 课程信息C(C#, CNAME, TEACHER) 若要求“查询选修了3门以上课程的学生的学生号”,正确的

admin2009-02-19  34

问题 该题基于“学生-选课-课程”数据库中的3个关系。
学生基本信息S(S#,SNAME, SEX, AGE)
选课信息SC(S#, C#, GRADE)
课程信息C(C#, CNAME, TEACHER)
若要求“查询选修了3门以上课程的学生的学生号”,正确的SQL语句是(    )。

选项 A、SELECT S# FROM SC GROUP BY S# WHERE COUNT (*)>3
B、SELECT S# FROM SC GROUP BY S# HAVING COUNT(*)>3
C、SELECT S# FROM SC ORDER BY S# WHERE COUNT(*)>3
D、SELECT S# FROM SC ORDER BY S# HAVING COUNT(*)>3

答案2

解析  SELECT语句的一般格式是:
SELECT [ALL|DISTICT]<目标列表达式>[,<目标列表达式>]…
FROM<基本表(或视图)>[,<基本表(或视图)>]…
[WHERE<条件表达式>)
[GROUP BY<列名1>[HAVING<内部函数表达式>]]
[ORDER BY<列名>[ASC|DESC]];
   整个语句的含义是:根据WHERE子句的条件表达式,从基本裹或视图找出满足条件的元组,按SELECT子句中的目标列表达式,选出元组中的属性值形成结果表。如果有ORDER子句,则结果表要根据指定的列名1按升序或降序掉序。GROUP子句将结果按列名1分组,每个组产生结果表中的一个元组。通常在每组中给出作用集函数,分组的附加条件用HAVING短语给出,只有满足内部函数表达式的组才予以输出。
   根据题童,先用GROUP BY于句按S#进行分组,再用集函数 COUNT对每一组计数。HAVING短语的条件是学生选修的课超过3门的组才会被选出来。所以正确的是选项B)。
转载请注明原文地址:https://kaotiyun.com/show/jKcZ777K
0

随机试题
最新回复(0)