编写查询以显示学生姓名和他们在任何学科中获得的最高分数

问题描述 投票:-2回答:1

我尝试使用group by并得到单行功能的错误消息,无法返回多个值。

它有三个表可供选择,分别是学生,学科和分数。

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9JTnRJeC5wbmcifQ==” alt =“在此处输入图像描述”>

sql inner-join
1个回答
0
投票

如果您仅需要student_id和MAX编号,则只能使用下表Student和Marks-

SELECT A.stident_id,MAX(B.Value) max_marks
FROM Student A
INNER JOIN Mark B ON A.Student_id = B.Student_id
GROUP BY A.stident_id

但是如果您还需要主题名称,则可以在逻辑下面尝试此操作-

SELECT AA.stident_id,AA.stident_name,
D.Subject_name,AA.max_marks
FROM
(
    SELECT A.stident_id,A.stident_name,MAX(B.Value) max_marks
    FROM Student A
    INNER JOIN Mark B ON A.Student_id = B.Student_id
    GROUP BY A.stident_id
)AA 
INNER JOIN Marks C ON AA.stident_id = C.stident_id 
AND AA.max_marks = C.Value
INNER JOIN Subject D ON C.subject_id = D.subject_id
© www.soinside.com 2019 - 2024. All rights reserved.