如何仅取分区范围内的最大周期相应值

时间:2018-09-18 14:49:02

标签: sql scala apache-spark-sql bigdata

我正在尝试总结4个范围内的移动数据。 我只需要考虑M 日期设备行的求和操作。

数据样本 例如:

行期间设备产品价值

1    20180407    C   1234    10
2    20180331   A   1234    12
3    20180331    D   1234    10 
4    20180324   A   1234    15
5    20180317   B   1234    10
6    20180310    B   1234    10
7    20180310   C   1234    10

输出应为

期间产品价值

20180407 1234 42(20180407至20180317。行1至5。排除20180324 A 15)

20180331 1234 42(总和(12 + 10 + 10)第2至7行。不包括20180324A 1234 15)

20180324 1234 35(sum(15 + 10 + 10 + 10)第4至7行排除(20180324 A和                                               20180310 B)

20180317 1234 20(不包括20180310 B,5至7)

20180310 1234 20(6-7行)

我试图从Windows函数中获取移动4个范围的总和,但不允许我仅考虑最大期间值。

select sum(value) over (partition by product order by period range 3 preceding)
from table;

Window.partitionBy("product").orderBy("period").rangeBetween (-3,0)

0 个答案:

没有答案