【发布时间】:2021-09-09 20:37:00
【问题描述】:
我的数据库中有两个表:
从标记中选择 *;
从主题中选择 *;
我需要找到在每个科目中获得最高分的学生的 ID 以及科目名称,即,Resultset 应该有 3 列:
| student_id | subject_name | maximum_marks |
|---|---|---|
| 1 | PHYSICS | 97.5 |
| 2 | CHEMSITRY | 98.5 |
请帮我为上述结果集编写查询
这是我迄今为止尝试过的
选择 m.student_id, s.subject_name, max(m.marks) 作为 maximum_marks from 标记 m 内连接主题 s 在 m.subject_id=s.subject_id 按 m.subject_id 分组;
输出:
【问题讨论】:
-
你试过什么?这显然是功课,SO 不是代码编写服务。首先,您真诚地尝试解决问题,如果不起作用,请与我们分享。
-
而且,顺便说一句,这并不难。首先,生成一个生成 student_id、subject_name 和标记的 JOIN 查询。简单。从那里,您只需使用 GROUP BY 子句将其更改为
MAX(marks) AS maximum_marks。 -
选择 m.student_id, s.subject_name, max(m.marks) as maximum_marks from marks m inner join subject s on m.subject_id=s.subject_id group by s.subject_id;我已经使用了上面的查询,但是 student_id 列在两行中都是 1。
-
如果有平局,你想要什么?
select version();显示什么? -
8.0.22 -> mysql 版本 你可以假设这种情况没有平局。
标签: mysql join aggregate-functions