sql查询所有学生选修课成绩
时间: 2024-05-18 15:18:52 浏览: 128
你可以使用以下 SQL 查询语句来获取所有学生选修课程的成绩:
```
SELECT students.name, courses.course_name, course_selections.grade
FROM students
INNER JOIN course_selections ON students.id = course_selections.student_id
INNER JOIN courses ON course_selections.course_id = courses.id;
```
这个查询将从三个表中检索信息:students(学生)、courses(课程)和course_selections(选课情况)。通过将这些表连接起来,可以获得每个学生选修的所有课程的成绩。
相关问题
SQL查询每门选修课成绩都不低于85分的学生的学号和姓名
可以回答这个问题。SQL查询语句如下:
SELECT 学号, 姓名
FROM 学生
WHERE NOT EXISTS (
SELECT *
FROM 选修课
WHERE 学生.学号 = 选修课.学号 AND 成绩 < 85
)
sql在Student SC Course中查询1号选修课中非计算机系学生比计算机系学生的平均成绩要高的所有学生的学号与姓名;
可以使用如下 SQL 语句来实现上述查询:
```sql
SELECT s.sid, s.sname
FROM Student s, SC c, Course o
WHERE s.sid = c.sid
AND c.cno = o.cno
AND o.cname = '选修1'
AND s.sdept <> '计算机系'
AND c.grade > (
SELECT AVG(c2.grade)
FROM SC c2, Course o2
WHERE c2.cno = o2.cno
AND o2.cname = '选修1'
AND s.sdept = '计算机系'
)
```
解释一下上述 SQL 语句:
- 首先,我们需要从三张表中进行查询,分别是 `Student`(学生表)、`SC`(选课表)和 `Course`(课程表);
- 我们需要将这三张表进行连接,通过学生ID、课程号和课程名称进行关联;
- 然后,我们需要筛选出选修1课程的记录,使用 `o.cname = '选修1'` 进行筛选;
- 接着,我们需要找出非计算机系学生的记录,使用 `s.sdept <> '计算机系'` 进行筛选;
- 最后,我们需要找出成绩高于计算机系学生平均成绩的记录,使用子查询 `SELECT AVG(c2.grade) FROM SC c2, Course o2 WHERE c2.cno = o2.cno AND o2.cname = '选修1' AND s.sdept = '计算机系'` 来计算计算机系学生的平均成绩,并使用 `c.grade >` 进行比较。
阅读全文