查询所有同学的学号、姓名、选课门数、平均成绩。
时间: 2023-07-10 10:22:13 浏览: 388
你可以使用下面这条 SQL 语句来查询所有同学的学号、姓名、选课门数、平均成绩:
```
SELECT s.id, s.name, COUNT(sc.course_id) AS num_courses, AVG(sc.score) AS avg_score
FROM students s
LEFT JOIN score sc ON s.id = sc.student_id
GROUP BY s.id, s.name;
```
这条语句中,我们使用了 `LEFT JOIN` 来连接学生表和成绩表,使用 `COUNT` 函数来计算每个学生选了多少门课程,使用 `AVG` 函数来计算每个学生的平均成绩,最后使用 `GROUP BY` 子句来按照学号和姓名分组。
相关问题
查询每位同学的选课门数、总成绩、平均成绩
您可以使用以下 SQL 命令查询每位同学的选课门数、总成绩和平均成绩:
```sql
SELECT 学生表.学号, 学生表.姓名, COUNT(*) AS 选课门数, SUM(成绩表.成绩) AS 总成绩, AVG(成绩表.成绩) AS 平均成绩
FROM 学生表, 成绩表
WHERE 学生表.学号 = 成绩表.学号
GROUP BY 学生表.学号, 学生表.姓名;
```
这将返回每位同学的选课门数、总成绩和平均成绩信息。使用 `COUNT(*)` 函数统计每个学生选修课程的门数,使用 `SUM(成绩表.成绩)` 函数计算每个学生的总成绩,使用 `AVG(成绩表.成绩)` 函数计算每个学生的平均成绩。同时,使用 `GROUP BY` 子句将结果按照学号和姓名进行分组,以方便查看每个学生的信息。
运用MySQL语句:查询所有同学的平均成绩及选课门数,要求显示学生的学号s_no、姓名s_name、平均成绩(将该列定名为average_score)、选课的门数(将该列定名为:choice_num)
好的,这道题需要使用到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` 子句根据学号进行分组,确保每个学生只出现一次。
希望这个回答能够帮到你。
阅读全文