sql语句:score表计算每个人单科的最高成绩有多少种写法(要求显示字段: 学号,姓名,课程,最高成绩)
时间: 2024-10-15 18:28:16 浏览: 20
只有两个字段用一个sql语句查询出某个学生的姓名、成绩以及在表中的排名
在SQL中,计算`score`表中每个人单科的最高成绩,你可以使用以下几种不同的查询方法:
1. **GROUP BY + MAX()**:
```sql
SELECT 学号, 姓名, 课程, MAX(成绩) as 最高成绩
FROM score
GROUP BY 学号, 姓名, 课程;
```
这个查询会按学号、姓名和课程对成绩进行分组,并返回每个组内的最高成绩。
2. **窗口函数** (如在PostgreSQL等支持窗口函数的数据库):
```sql
SELECT 学号, 姓名, 课程, MAX(成绩) OVER (PARTITION BY 学号, 姓名, 课程) as 最高成绩
FROM score;
```
这里使用了`OVER()`窗口函数来获取每个学生的每门课的最大成绩。
3. **子查询**:
```sql
SELECT 学号, 姓名, 课程, score AS 最高成绩
FROM score
WHERE score = (
SELECT MAX(成绩)
FROM score s2
WHERE s2.学号 = score.学号 AND s2.课程 = score.课程
);
```
这个查询先找出每个学生的每门课的最大成绩,然后在主查询中选择那些最大值作为最高成绩。
阅读全文