sql - 编写查询以显示学生姓名和他们在任何科目中的最高分
问题描述
我尝试使用 group by 并收到单行函数无法返回多个值的错误消息。
它有三个表格可供选择的学生、科目和分数。
解决方案
如果您只需要 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
推荐阅读
- bash - 如何在 BASH 环境中将列中的数字列表替换为其他列中的随机数
- reactjs - Reactjs中的状态保存以前的状态值,如何用新编辑的表单值更新状态
- html - MVC 在视图中更改日期类型
- javascript - 如何在 Django 模板过滤器中注入 JavaScript 变量
- mysql - 使用 pgloader 将 rails 中的数据从 mysql 迁移到 postgres 时,每个表的 created_at 和 updated_at 字段不一致
- javascript - Highcharts 标题对齐
- python - 将 doc2vec 段落表示映射到训练后的类标签
- excel - 将字符串从 Excel 传递到 Word
- java - 如何访问嵌套的 Hashmap
- javascript - 变量值仅在“then”promise 中可见