在PostgreSQL中查找每个组的最大值

在PostgreSQL中查找每个组的最大值,postgresql,Postgresql,从下表(称为学生): 我试图找到课程“a”中得分最高的名字。因此,在本例中,答案中应该是a和D,但我的查询似乎只报告了所有学生的最高分数: SELECT name FROM Student WHERE mark >= all (SELECT mark FROM Student WHERE course='a'); 我哪里出错了?这似乎是行编号()的工作。: 你太近了!只要把东西搬来搬去,你就没事了。不需要任何复杂的东西 SELECT name FROM Student s WHE

从下表(称为学生):

我试图找到课程“a”中得分最高的名字。因此,在本例中,答案中应该是a和D,但我的查询似乎只报告了所有学生的最高分数:

SELECT name
FROM Student
WHERE mark >= all
    (SELECT mark FROM Student WHERE course='a');

我哪里出错了?

这似乎是
行编号()的工作。


你太近了!只要把东西搬来搬去,你就没事了。不需要任何复杂的东西

SELECT name
FROM Student s
WHERE course = 'a' AND mark >= all
     (SELECT mark FROM Student WHERE name = s.name);

编辑您的问题并显示结果。
select s.*
from (select s.*,
             row_number() over by (partition by name order by mark desc) as seqnum
      from student s
     ) s
where seqnum = 1;
SELECT name
FROM Student s
WHERE course = 'a' AND mark >= all
     (SELECT mark FROM Student WHERE name = s.name);