sql - 带有教职员工姓名的主题中的最高分
问题描述
编写查询以显示人员姓名、处理的主题名称、该主题的最高分数列表。给最大值标记一个别名为max_mark
。根据最大标记以降序对结果进行排序。
这是架构图。
这是我尝试过的代码。
select distinct
staff_name,
subject_name,
max(value) over (partition by sb.staff_id) as max_mark
from subject sb
inner join staff st
on st.staff_id=sb.staff_id
inner join mark m
on m.subject_id=sb.subject_id
order by max_mark desc;
我能够通过一个测试用例,但我无法通过第二个测试用例,我不知道第二个测试用例是什么,而且我没有得到我在上面的代码中做错了什么。有没有办法获得解决方案这个问题。
解决方案
我认为你想要聚合:
select
st.staff_name,
su.subject_name,
max(ma.value) as max_mark
from subject su
inner join staff st on st.staff_id = sb.staff_id
inner join mark ma on ma.subject_id = su.subject_id
group by st.staff_id, st.staff_name, su.subject_id, su.subject_name
order by max_mark desc;