在 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 运算符过滤出满足条件的行。

两种方法都能实现相同的效果,选择哪种方法取决于个人偏好和具体场景。

Hive 中如何获取每个 ID 的最大 RowNumber 数据

原文地址: https://www.cveoy.top/t/topic/mUYf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录