例如:输入
ID Col1 Col2 Col3
-- ---- ---- ----
1 a a sql
2 a a hive
输出
ID Col1 Col2 Col3
-- ---- ---- ----
1 a a sql
这里我的id值和col3值是唯一的,但是我需要过滤minid并填充所有记录。
我知道下面的方法将工作,但任何最好的方法,除此之外,请建议
按col1、col2从表组中选择col1、col2、min(id);
在id上加入这个,col1,col2
2条答案
按热度按时间2nbm6dog1#
我想你想要
row_number()
:a5g8bdjr2#
似乎配置单元支持行编号。虽然我从未使用过hive,但其他rdbms会这样使用它来获取min行的全部内容,而不需要联接(如果存在重复的最小值,则不会遇到问题)
内部查询选择所有表数据,并按id的顺序建立递增计数器。它可以基于任何列,min id(在本例中)是第1行。如果你想要最大值,
order by ID desc
如果您想为另一列的不同值重新启动该数字(例如,10个col3是“sql”,20行有“hive”),您可以说是按col3按id排序的分区,行号将是一个计数器,它为col3的相同值递增,为col3的每个不同值从1重新启动