首页 > 解决方案 > 编写查询以显示学生姓名和他们在任何科目中的最高分

问题描述

我尝试使用 group by 并收到单行函数无法返回多个值的错误消息。

它有三个表格可供选择的学生、科目和分数。

在此处输入图像描述

标签: sqlinner-join

解决方案


如果您只需要 student_id 和 MAX number,则只能使用以下表格 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

推荐阅读