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。