Я пытаюсь вычислить промежуточную сумму и сбросить ее до 0 на основе 2 условий или, если достигнут предел.
Вот пример.
Как и на картинке выше, мне нужно получить промежуточную сумму при соблюдении следующих условий:
месячная скидка = 0 и месячный билет = 1
Если одно из скидок = 1 и билетов = 0, следующее значение для промежуточного итога должно быть 0.
running_total <50 </p>
Если промежуточный итог> = 50, значение промежуточного итога должно начинаться со значения в той же строке.
Вот что я пытаюсь сделать сейчас:
Есть ли возможность сделать это в HIVE? Большое вам спасибо !!!
SELECT * ,
SUM(tag_flg) OVER (PARTITION BY account, flg_sum
ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
AS running_sum
FROM
( SELECT * ,
SUM(CASE
WHEN tag_flg>=50 THEN value
ELSE tag_flg
END) OVER (PARTITION BY account
ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
AS flg_sum
FROM
( SELECT * ,
CASE
WHEN month_disc =0
AND month_ticket = 1 THEN value
ELSE 0
END AS tag_flg
FROM source_table) x) y