Hive 如何在ORDERBY子句上对分区列执行差异?

Hive 如何在ORDERBY子句上对分区列执行差异?,hive,hiveql,Hive,Hiveql,考虑如下表: 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上执

考虑如下表:

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
上按顺序排序,然后在行上查找差异。

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

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

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

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

你好Bijendra,很高兴在StackOverflow见到你。请尽量对您的问题进行更详细的描述,为我们提供一些您想要实现的目标的见解。为我们提供使用plunkr或类似工具的工作,或至少提供一段可用于再现错误的代码。别忘了用de`for code
格式化你的问题,就像这样
Hello Bijendra,很高兴在StackOverflow看到你。请尽量对您的问题进行更详细的描述,为我们提供一些您想要实现的目标的见解。为我们提供使用plunkr或类似工具的工作,或至少提供一段可用于再现错误的代码。别忘了像这样用de`for code
格式化你的问题
谢谢你宝贵的评论。。你说的nv1是什么意思?NVL是一个处理空值的配置单元函数,以防没有以前的值是的,谢谢!!上面的查询并没有服务于我的结果,因为我的要求是每个分区的第一行应该有相同的值。和R1中一样,C3值应该是相同的基表。但是在使用滞后值之后,每个分区中的值都会被1减去,并且分别被作为偏移值扣除……请帮助..你能给出一个例子说明什么是错误的,以及你想如何纠正它吗?您好,这里是示例。样本表1,英格兰,10000 2,纽约,20000 3,英格兰,30000 4,威尔士,40000 5,英格兰,50000 6,纽约,60000 7,英格兰,70000 8,威尔士,80000。当我运行建议的查询时,我得到以下结果:1英格兰9999英格兰20000 5英格兰20000 7英格兰20000 4威尔士39996 2纽约19998 6纽约40000 8威尔士79992预期结果:1英格兰10000 3英格兰20000 4英格兰20000 7英格兰20000 2纽约20000 6纽约40000 4威尔士40000 8威尔士40000。感谢您的支持有价值的评论。。你说的nv1是什么意思?NVL是一个处理空值的配置单元函数,以防没有以前的值是的,谢谢!!上面的查询并没有服务于我的结果,因为我的要求是每个分区的第一行应该有相同的值。和R1中一样,C3值应该是相同的基表。但是在使用滞后值之后,每个分区中的值都会被1减去,并且分别被作为偏移值扣除……请帮助..你能给出一个例子说明什么是错误的,以及你想如何纠正它吗?您好,这里是示例。样本表1,英格兰,10000 2,纽约,20000 3,英格兰,30000 4,威尔士,40000 5,英格兰,50000 6,纽约,60000 7,英格兰,70000 8,威尔士,80000。当我运行建议的查询时,我得到以下结果:1英格兰9999英格兰20000 5英格兰20000 7英格兰20000 4威尔士39996 2纽约19998 6纽约40000 8威尔士79992预期结果:1英格兰10000 3英格兰20000 4英格兰20000 7英格兰20000 2纽约20000 6纽约40000 4威尔士40000 8威尔士40000。