SQL多表数据查询自己选修课程中成绩比自己平均分高的那些课程的课程号及学号、成绩
时间: 2024-05-11 20:15:53 浏览: 12
您好!根据您的要求,可以使用以下 SQL 语句来实现多表数据查询自己选修课程中成绩比自己平均分高的那些课程的课程号及学号、成绩:
```
SELECT SC.Cno, SC.Sno, SC.Score
FROM SC
WHERE SC.Score > (SELECT AVG(SC2.Score)
FROM SC AS SC2
WHERE SC2.Sno = SC.Sno)
```
这个 SQL 查询语句中,首先从 SC 表中选取选修成绩高于自己平均分的课程,然后使用子查询计算平均分。最后返回的结果包括课程号、学号和成绩。希望对您有所帮助!
相关问题
sql查询选修了2门以上课程的学生学号和平均成绩
好的,针对你的问题,可以使用如下的 SQL 查询语句:
```
SELECT sc.s_id, AVG(sc.score) as avg_score
FROM score sc
WHERE sc.s_id IN (
SELECT s_id
FROM score
GROUP BY s_id
HAVING COUNT(DISTINCT c_id) >= 2
)
GROUP BY sc.s_id;
```
这个查询语句中,首先使用了一个子查询来查询选修了2门及以上课程的学生学号,然后在外部查询中使用了这个子查询的结果来过滤学生成绩表中的数据。最后使用 GROUP BY 子句来按照学生学号对成绩进行分组,并且使用 AVG 函数来计算平均成绩。
注意:这里假设选课表名为 course,成绩表名为 score,学生表名为 student,课程表名为 subject,且成绩表中的 c_id 字段表示课程编号,s_id 字段表示学生学号,score 字段表示成绩。
查询每位学生选修课程的成绩高于其所选修课程的平均成绩的学生学号和课程号;SQL语句
可以使用嵌套查询来实现该功能。首先,查询每门课程的平均成绩,然后再查询每位学生选修课程的成绩是否高于该课程平均成绩,最后筛选出符合条件的学生学号和课程号即可。具体的SQL语句如下:
```
SELECT SC.student_id, SC.course_id
FROM score AS SC
WHERE SC.score > (
SELECT AVG(score)
FROM score
WHERE course_id = SC.course_id
)
```