使用mysql查询语句查询选修的学分数超过6个学分的所有成绩都及格的,平均成绩80分以上的同学学号、学分数平均成绩(用学号,学分数,平均成绩表示)
时间: 2024-03-10 21:45:45 浏览: 101
好的,根据您的要求,以下是MySQL查询语句:
```
SELECT s.sid, SUM(c.credit) AS total_credit, AVG(s.score) AS avg_score
FROM score AS s
JOIN course AS c ON s.cid = c.cid
WHERE s.score >= 60 AND s.sid IN (
SELECT sid FROM score
JOIN course ON score.cid = course.cid
WHERE course.credit > 6
GROUP BY sid
HAVING SUM(course.credit) > 6
)
GROUP BY s.sid
HAVING AVG(s.score) > 80;
```
该查询语句会查询选修的学分数超过6个学分的所有成绩都及格的,平均成绩80分以上的同学学号、学分数平均成绩。具体解释见下:
- `SELECT` 语句中的 `s.sid` 表示选择学生的学号字段,`SUM(c.credit)` 表示所选课程学分数的总和,`AVG(s.score)` 表示所选课程成绩的平均值。
- `FROM` 语句中的 `score` 表示成绩表,`course` 表示课程表。使用 `JOIN` 连接这两个表,通过 `s.cid = c.cid` 来连接两个表的课程 ID 字段。
- `WHERE` 语句中,`s.score >= 60` 表示成绩必须及格,`s.sid IN (...)` 表示学生必须选修了学分数超过6个学分的课程。这里使用了子查询来查找选修了学分数超过6个学分的学生学号。
- `GROUP BY` 语句中,按照学号进行分组,以便计算每个学生的总学分数和平均成绩。
- `HAVING` 语句中,`SUM(course.credit) > 6` 表示选修的学分数必须超过6个学分,`AVG(s.score) > 80` 表示平均成绩必须超过80分。
- 最后,得到的结果会按照学号进行排序,并显示学号、总学分数、平均成绩这三个字段。
阅读全文