2015-11-24 4 views
2

Предположим, у меня есть стол для студентов с некоторыми полями в impala. Представьте себе, что есть поле под названием total_mark, и я должен найти детали студента с максимальной отметкой из каждой ветки.Показать все поля, связанные с записью, используя Impala

Моя таблица выглядит так: -

Student table

В этой таблице я должен получить детали студента с максимальными отметками от каждого отдела. Мой запрос будет выглядеть следующим образом: -

select id,max(total_marks) from student_details group by department; 

Но используя этот запрос я могу получить только идентификатор и total_marks. При условии, что могут быть студенты с одинаковым именем, возраст, который я не могу сгруппировать с такими полями, как возраст, имя.

Так как же я должен запросить таблицу, чтобы получить все детали высшего ученика из каждого отдела?

Заранее спасибо.

ответ

4

Вы можете использовать JOIN концепции

select stu.* 
from student_details stu 
join 
( select department,max(total_marks) as max 
    from student_details 
    group by department 
) rank 
on stu.department=rank.department and stu.total_marks=rank.max;