首页 > 解决方案 > 带有教职员工姓名的主题中的最高分

问题描述

编写查询以显示人员姓名、处理的主题名称、该主题的最高分数列表。给最大值标记一个别名为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;

我能够通过一个测试用例,但我无法通过第二个测试用例,我不知道第二个测试用例是什么,而且我没有得到我在上面的代码中做错了什么。有没有办法获得解决方案这个问题。

标签: sqloraclemax

解决方案


我认为你想要聚合:

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;

推荐阅读