mysql 查询每个学生最高的分值的科目和分值
时间: 2024-02-11 16:05:06 浏览: 161
sql查询出各科成绩最好的学生信息
假设有如下的学生分数表`score_table`,其中包含`学生ID`、`科目`和`分数`三个字段:
```
+----+--------+-------+
| id | subject| score |
+----+--------+-------+
| 1 | Math | 80 |
| 1 | English | 75 |
| 1 | Science | 90 |
| 2 | Math | 85 |
| 2 | English | 70 |
| 2 | Science | 95 |
| 3 | Math | 90 |
| 3 | English | 80 |
| 3 | Science | 85 |
+----+--------+-------+
```
要查询每个学生最高的分值的科目和分值,可以使用如下的SQL语句:
```
SELECT id, subject, score
FROM (
SELECT id, subject, score,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY score DESC) AS rn
FROM score_table
) t
WHERE rn = 1;
```
在上面的SQL语句中,我们首先使用了一个子查询,使用ROW_NUMBER() OVER (PARTITION BY id ORDER BY score DESC)来为每个学生的分数按照从高到低进行排序,并对每个学生的分数进行编号。然后在外部查询中,我们只选择每个学生编号为1的记录,即选择每个学生最高的分值的科目和分值。执行以上SQL语句后,将得到如下结果:
```
+----+--------+-------+
| id | subject| score |
+----+--------+-------+
| 1 | Science| 90 |
| 2 | Science| 95 |
| 3 | Math | 90 |
+----+--------+-------+
```
其中,每行记录表示一个学生最高的分值的科目和分值。
阅读全文