Hive 中如何获取每个 ID 的最大 RowNumber 数据
在 Hive 中,可以通过子查询和窗口函数来获取每个 ID 的最大 RowNumber 数据。
方法一:使用子查询
SELECT *
FROM (
SELECT id, name, score, ROW_NUMBER() OVER (PARTITION BY id ORDER BY score DESC) AS rn
FROM table_name
) t
WHERE t.rn = 1;
该查询首先对每个 ID 分组,并按照分数降序排序,然后使用 ROW_NUMBER 函数为每个分组中的每一行分配一个行号。最后,外部查询选择每个分组中行号为 1 的行,即每个 ID 的最高分数行。
方法二:使用窗口函数
SELECT id, name, score
FROM table_name
WHERE (id, score) IN (SELECT id, MAX(score) FROM table_name GROUP BY id);
该查询使用 MAX 函数获取每个 ID 的最高分数,然后通过 IN 运算符过滤出满足条件的行。
两种方法都能实现相同的效果,选择哪种方法取决于个人偏好和具体场景。
原文地址: https://www.cveoy.top/t/topic/mUYf 著作权归作者所有。请勿转载和采集!