hive - 如何通过 order by 子句对分区列执行差异?
问题描述
考虑如下表:
col1 col2 col3
1000 RRR 100000
2000 RRR 400000
3000 RRR 300000
4000 YYY 200000
5000 YYY 400000
6000 RRR 400000
6000 ZZZ 500000
我想要的输出:
1000 RRR 0
2000 RRR 300000
3000 RRR 100000
6000 RRR 400000
....
我需要执行 partition on col2
, order by oncol3
然后找到行的差异。
解决方案
您可以将此代码段用作查询的基础:
SELECT c1, c2,
c3 - nvl(lag(c3) OVER (PARTITION BY c2 ORDER BY c1), c3) as diff
FROM t;