我有这样的样本数据。我需要的是,对于每两行,其中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
答案 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;