查询每位学生选修课程的成绩高于其所选修课程的平均成绩的学生学号和课程号;SQL语句
时间: 2024-05-14 17:11:32 浏览: 25
可以使用嵌套查询来实现该功能。首先,查询每门课程的平均成绩,然后再查询每位学生选修课程的成绩是否高于该课程平均成绩,最后筛选出符合条件的学生学号和课程号即可。具体的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
)
```
相关问题
SQL语句查询每个学生的学号、姓名、选修的课程号、课程名和成绩
可以使用如下的 SQL 语句来查询每个学生的学号、姓名、选修的课程号、课程名和成绩:
```
SELECT s.id AS 学号, s.name AS 姓名, c.id AS 课程号, c.name AS 课程名, sc.score AS 成绩
FROM student s
INNER JOIN score sc ON s.id = sc.stu_id
INNER JOIN course c ON sc.course_id = c.id;
```
其中,`student` 表存储了学生的信息,包括学号和姓名;`course` 表存储了课程的信息,包括课程号和课程名;`score` 表存储了学生选修的课程和对应的成绩,包括学生的学号、课程号和成绩。通过 `INNER JOIN` 连接这三个表,就可以查询到每个学生的学号、姓名、选修的课程号、课程名和成绩。
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 字段表示成绩。