如何通过order by子句对分区列执行差异?

问题描述 投票:1回答:1

请考虑如下表:

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
....

我需要在col2上进行分区,在col3上进行排序,然后在行上查找差异。

hive hiveql
1个回答
0
投票

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

SELECT c1, c2,
       c3 - nvl(lag(c3) OVER (PARTITION BY c2 ORDER BY c1), c3) as diff
FROM t;
© www.soinside.com 2019 - 2024. All rights reserved.