2017-02-11 3 views
0

Из следующей таблицы (под названием Student):Поиск максимальное значение для каждой группы в PostgreSQL

name course mark  
A  a   100 
A  c   78 
A  d   83 
B  a   79 
B  b   91 
C  c   78 
C  d   65 
D  a   75 

Я пытаюсь найти имена, где высший балл был в курсе «a'.So в этом случае, а и D должны быть в ответе, но мой запрос, кажется, только сообщить максимальную отметку всех студентов:

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

Где я буду неправильно?

+1

Редактировать свой вопрос и показать результаты. –

ответ

1

Ты так близко! Просто двигайся, и ты в порядке. Не нужно ничего сложного.

0

Это похоже на работу для row_number():

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; 
Смежные вопросы