查询所选课程的平均成绩大于张立的平均成绩的学生学号、姓名及平均成绩;(student表有学号,姓名。sc表有学号,成绩)
时间: 2024-12-09 09:18:25 浏览: 11
带有IN谓词的子查询续-数据库 ppt 王珊
假设我们有一个名为`student`的表,其中包含学生的学号(`sid`)和姓名(`name`),还有一个名为`sc`的表,包含学生的学习记录,包括学号(`sid`)和成绩(`score`)。为了查询满足条件的学生信息,我们可以编写如下的SQL查询:
```sql
SELECT s.sid, s.name, AVG(sc.score) as average_score
FROM student s
JOIN sc ON s.sid = sc.sid
GROUP BY s.sid, s.name
HAVING AVG(sc.score) > (SELECT AVG(score) FROM sc WHERE sid = '张立')
```
这个查询做了以下几步操作:
1. 通过`JOIN`将`student`表和`sc`表连接起来,基于它们的学号关联。
2. 使用`GROUP BY`按学号和姓名对结果分组,这样每个学生的所有成绩会被视为一组计算平均值。
3. `AVG(sc.score)`计算每个学生的平均成绩。
4. `HAVING`子句筛选出平均成绩大于张立平均成绩的那些学生。
阅读全文