对于以下格式的学生数据库
Roll Number | School Name | Name | Age | Gender | Class | Subject | Marks
如何找出每个类(class)谁得分最高?下面的查询返回整个组,但我有兴趣找到组中的第一行。
select school,class,roll,sum(marks) as total from students group by school,class,roll order by school, class, total desc;
最佳答案
另一种使用 row_number()
的方法
select * from (
select *,
row_number() over (partition by school,class,roll order by marks desc) rn
from students
) t1 where rn = 1
如果您想返回最高分的所有领带,请使用
rank()
而不是 row_number()
关于group-by - 使用 Hive 查找组中的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26009059/