Как взять только максимальный период соответствующих значений в пределах диапазона раздела - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь суммировать движущиеся данные в пределах 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. Строки 1to5.Exclude 20180324 A 15)

20180331 1234 42 (сумма (12+ 10 + 10) Строки с 2 по 7. Исключить 20180324A 1234 15)

20180324 1234 35 (сумма (15 + 10 + 10 + 10) строк с 4 по 7. Исключить (20180324 A и 20180310 B)

20180317 1234 20 (исключая 20180310 B, от 5 до 7)

20180310 1234 20 (ряд 6-7)

Я попытался взять сумму перемещения 4 диапазона из функции Windowsно это не позволяет мне учитывать только максимальные значения периода.

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

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