sqlsever (2)查询每个学生所选课程的最高成绩,要求列出学号、姓名、最高成绩。
时间: 2024-05-12 13:19:03 浏览: 200
学科、姓名、分数。 分别计算每门学科分数最高的前三名,并显示名次。写入MySQL中。
假设有三个表:学生表(Students)、课程表(Courses)和成绩表(Scores),表结构如下:
Students表:
| 学号 | 姓名 |
| ---- | ---- |
| 1 | 张三 |
| 2 | 李四 |
| 3 | 王五 |
Courses表:
| 课程号 | 课程名 |
| ------ | ------ |
| 1 | 语文 |
| 2 | 数学 |
| 3 | 英语 |
Scores表:
| 学号 | 课程号 | 成绩 |
| ---- | ------ | ---- |
| 1 | 1 | 85 |
| 1 | 2 | 90 |
| 1 | 3 | 95 |
| 2 | 1 | 80 |
| 2 | 2 | 85 |
| 2 | 3 | 90 |
| 3 | 1 | 75 |
| 3 | 2 | 80 |
| 3 | 3 | 85 |
查询语句如下:
```sql
SELECT Students.学号, Students.姓名, MAX(Scores.成绩) AS 最高成绩
FROM Students
INNER JOIN Scores ON Students.学号 = Scores.学号
GROUP BY Students.学号, Students.姓名;
```
查询结果如下:
| 学号 | 姓名 | 最高成绩 |
| ---- | ---- | -------- |
| 1 | 张三 | 95 |
| 2 | 李四 | 90 |
| 3 | 王五 | 85 |
解释:
1. 使用INNER JOIN连接学生表和成绩表,通过学号进行关联。
2. 使用MAX函数计算每个学生的最高成绩,并将其命名为“最高成绩”。
3. 使用GROUP BY对学号和姓名进行分组,确保查询结果每一行只出现一个学生的信息和对应的最高成绩。
阅读全文