考试报名
考试报名
考试内容
考试大纲
在线客服
返回顶部

备考刷题,请到

CDA认证小程序

假设有scores表的设计如下:StudentID(学生编号)CourseID(课程编号)Score(分数) 现在要查询参加过至少两门课程考试的学生各门课程的平均成绩。以下SQL语句正确的是
A. select StudentID,avg(score) from scores group by StudentID having count(studentID)>=2 
B. select StudentID,avg(score) from scores group by StudentID where count(studentID)>=2
C. select StudentID,avg(score) from scores where count(studentID)>=2 group by StudentID
D. select StudentID,avg(score) from scores having count(studentID)>=2 group by StudentID
上一题
下一题
收藏
点赞
评论
题目解析
题目评论(0)

正确答案是:A: `select StudentID, avg(score) from scores group by StudentID having count(studentID) >= 2`

分析:

1. **选项A**:
- 这条SQL语句使用了`GROUP BY`和`HAVING`子句。
- `GROUP BY StudentID`将数据按学生编号分组。
- `HAVING count(studentID) >= 2`用于过滤分组后的结果,确保只保留参加过至少两门课程考试的学生。
- `avg(score)`计算每个学生的平均成绩。
- 这正是题目要求的查询,语法和逻辑都是正确的。

2. **选项B**:
- 使用了`GROUP BY`和`WHERE`子句。
- `WHERE`子句不能用于聚合函数(如`count`),因为`WHERE`是在分组之前进行过滤的。
- 语法错误,不能实现题目要求。

3. **选项C**:
- 使用了`WHERE`子句和`GROUP BY`,但`WHERE`子句中使用了聚合函数`count(studentID)`。
- `WHERE`在分组之前执行,无法使用聚合函数。
- 语法错误,不能实现题目要求。

4. **选项D**:
- 语句顺序错误,`HAVING`子句应该在`GROUP BY`之后。
- 语法错误。

因此,选项A是唯一正确的选择,符合题目要求的查询条件和SQL语法。