例如:输入
ID Col1 Col2 Col3 - —- —- —-1个a sql2一个蜂巢出局
ID Col1 Col2 Col3 - —- —- —-1个a sql我的……
看来Hive支持ROW_NUMBER。虽然我从来没有使用过hive,但是其他rdbms会像这样使用它来获取min行的全部内容而不需要加入(如果有重复的最小值则不会遇到问题)
SELECT a.* FROM ( SELECT *, ROW_NUMBER() OVER(ORDER BY id) rn FROM yourtable ) a WHERE a.rn = 1
内部查询选择所有表数据并按ID的顺序建立递增计数器。它可以基于任何列,最小ID(在这种情况下)是行号1.如果你想要最大值, order by ID desc 如果你想要为另一列的不同值重新启动数字(例如,你的Col3中有10个是“sql”而20行是“hive”),你可以说是PARTITION BY col3 ORDER BY id,行号将是一个计数器对于col3的相同值递增,从col3的每个不同值重新开始
order by ID desc
我想你想要的 row_number() :
row_number()
select t.* from (select t.*, row_number() over (partition by col1, col2 order by id) as seqnum from t ) t where seqnum = 1