按值范围分组并删除Hql / Sql中的重复行

时间:2017-08-07 02:22:39

标签: sql hive hql

我有这样的样本数据。我需要的是,对于每两行,其中0 <= A值差异<= 1,(例如0 <= row1.A - row1.B <=1)丢弃重复值B和{{1} },保留较小的C行。这可以在Hql中完成而不使用用户defiend函数吗?

A

结果:

A B C
1 2 3
4 2 3
2 1 1
3 1 1
2 2 3
3 0 2

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您需要B / C行上的A值与之前的A值相差至少2的行。

您可以使用lag()然后使用某些逻辑来执行此操作:

select t.*
from (select t.*, lag(A) over (partition by B, C order by A) as prev_a
      from t
     ) t
where prev_a is null or A > prev_a + 1;