group-by - 使用 Hive 查找组中的第一行

标签 group-by hive hiveql

对于以下格式的学生数据库

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/

相关文章:

sql - 配置单元中 `load data inpath ` 和 `location` 之间的区别?

具有 3 个表的左连接、计数和分组的 MySQL 查询

Python 提取一个新的数据框

sql - Postgresql 一张表多次计数

apache - 我可以仅将源文件中的特定数据加载到HIVE表中吗?

hive - 如何将 array<map<string,int>> 插入到 hive 表中?

mysql - MySql中带有分组语句的两个不同表的总和差异

hive - 带有比较运算符的 `where` 中的子查询

hadoop - 是否可以在单节点安装中使用HWI(Hive Web界面)?

mysql - 在 hive 中使用多个 or 和 and 条件时出错