单选(1分)
如下几个表所示学生、课程和选课关系,用SQL语言实现下列操作。
试列出计算机系所开课程(CS标志)的最高成绩、最低成绩和平均成绩。如果某门课程的成绩不全(即“成绩”中有NULL出现),则该课程不予统计,结果按“课程号”升序排列。正确的SQL语句是_____。
-
A.
SELECT 课程号,MAX(成绩),MIN(成绩),AVG(成绩) FROM 选课
WHERE 课程号 Like ‘CS%’ GROUP BY 课程号 HAVING 课程号 NOT IN
(SELECT 课程号 FROM 选课 WHERE 成绩 IS NULL)
ORDER BY 课程号;
-
B.
SELECT 课程号,MAX(成绩),MIN(成绩),AVG(成绩) FROM 选课
WHERE 课程号 Like ‘CS%’ GROUP BY 课程号
HAVING 课程号 NOT IN (SELECT 课程号 FROM 选课 WHERE 成绩 IS NULL)
-
C.
SELECT 课程号,MAX(成绩),MIN(成绩),AVG(成绩) FROM 选课
WHERE 课程号 Like ‘CS%’ GROUP BY 课程号
HAVING 课程号 IN (SELECT 课程号 FROM 选课 WHERE 成绩 IS NULL)
ORDER BY 课程号;
-
D.
SELECT MAX(成绩),MIN(成绩),AVG(成绩) FROM 选课
WHERE 课程号= ‘CS%’ GROUP BY 课程号
HAVING 课程号 NOT IN (SELECT 课程号 FROM 选课 WHERE 成绩 IS NULL)
ORDER BY 课程号;
-
答案:A
A.题目要显示最高成绩,最低成绩和平均成绩,分别是MAX(成绩),MIN(成绩),AVG(成绩);要排除没有成绩的学生,先选出成绩为NULL的,为“SELECT 课程号 FROM 选课 WHERE 成绩 IS NULL”,所以排除没有成绩的即是NOT IN,由于是选出课程名中包括CS标志的,所以WHERE应该是:课程号 LIKE ‘CS%’;按照课程号排序,Order by课程号,默认是升序,注意GROUP By 和 HAVING是连起来用的,综上此选项正确。
B.此选项不正确,缺少排序子句。
C.此选项不正确,应该是NOT IN。
D.此选项不正确,模糊查询不能用=。