运用MySQL语句:查询所有同学的平均成绩及选课门数,要求显示学生的学号s_no、姓名s_name、平均成绩(将该列定名为average_score)、选课的门数(将该列定名为:choice_num)
时间: 2024-03-21 14:44:25 浏览: 283
好的,这道题需要使用到MySQL的聚合函数和子查询。下面是 SQL 语句:
```
SELECT
s_no,
s_name,
AVG(score) AS average_score,
COUNT(DISTINCT c_no) AS choice_num
FROM
score,
student
WHERE
score.s_no = student.s_no
GROUP BY
s_no;
```
解释一下这个 SQL 语句的主要步骤:
1. `FROM` 语句将 `score` 表和 `student` 表连接在一起。
2. `AVG()` 聚合函数计算每个学生的平均成绩,并将结果命名为 `average_score`。
3. `COUNT(DISTINCT c_no)` 计算每个学生选课的门数,并将结果命名为 `choice_num`。
4. `GROUP BY` 子句根据学号进行分组,确保每个学生只出现一次。
希望这个回答能够帮到你。
相关问题
运用MySQL语句:查询所有选修了课程但未参加考试的所有同学及相应的课程,要求显示学生的学号s_no、姓名s_name、课程号course_no、课程名称course_name
可以使用以下MySQL语句来查询所有选修了课程但未参加考试的所有同学及相应的课程:
```
SELECT student.s_no, student.s_name, score.course_no, course.course_name
FROM student
INNER JOIN score ON student.s_no = score.s_no
INNER JOIN course ON score.course_no = course.course_no
WHERE score.score IS NULL;
```
这个查询语句使用了INNER JOIN连接了student、score和course三个表,其中student表包含学生的信息,score表包含学生选课和成绩的信息,course表包含课程的信息。查询条件是score表中的成绩为NULL,即未参加考试。最终查询结果包括学生的学号、姓名、选修的课程号和课程名称。
运用MySQL:查询所有选修了课程但考试不及格(假设<60分为不及格)的所有同学及相应的课程,要求显示学生的学号s_no、姓名s_name、课程号course_no、
可以使用以下MySQL语句来查询所有选修了课程但考试不及格的所有同学及相应的课程:
```
SELECT student.s_no, student.s_name, score.course_no
FROM student
INNER JOIN score ON student.s_no = score.s_no
WHERE score.score < 60;
```
这个查询语句使用了INNER JOIN连接了student和score两个表,其中student表包含学生的信息,score表包含学生选课和成绩的信息。查询条件是score表中的成绩小于60分,即考试不及格。最终查询结果包括学生的学号、姓名和选修的课程号。如果需要显示课程名称,可以再INNER JOIN连接course表。
阅读全文