首页 > 解决方案 > 如何通过 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然后找到行的差异。

标签: hivehiveql

解决方案


您可以将此代码段用作查询的基础:

SELECT c1, c2,
       c3 - nvl(lag(c3) OVER (PARTITION BY c2 ORDER BY c1), c3) as diff
FROM t;

推荐阅读